So I have been working with leetcode for the past few months preparing for job interviews. An interesting phenomenon I came across was when I used a helper function after the main function it happened to be faster.
This took 4 ms according to leetcode
class Solution {
public:
int countSubstrings(string s) {
int n = s.length();
int ans = 0;
for(int i=0;i<n;i++){
int l1 = expandCenter(i,i,s);
int l2 = expandCenter(i,i+1,s);
ans+=(((l1+1)/2)+(l2/2));
}
return ans;
}
int expandCenter(int l,int r,string s){
int n = s.length();
while(l>=0 && r<n){
if(s[l]==s[r])
l--,r++;
else
break;
}
return r-l-1;
}
};
This took 8 ms according to leetcode
class Solution {
public:
int expandCenter(int l,int r,string s){
int n = s.length();
while(l>=0 && r<n){
if(s[l]==s[r])
l--,r++;
else
break;
}
return r-l-1;
}
int countSubstrings(string s) {
int n = s.length();
int ans = 0;
for(int i=0;i<n;i++){
int l1 = expandCenter(i,i,s);
int l2 = expandCenter(i,i+1,s);
ans+=(((l1+1)/2)+(l2/2));
}
return ans;
}
};
Why does this happen?