//1 check a string is palindrome or not
bool checkString(string &name,int start,int end)
{
if(start>=end)
{
return true;
}
char a=name[start];
char b=name[end];
if(a==b)
{
return checkString(name,++start,--end);
}
return false;
}
//2 get maximum element from a array
int getMax(vector<int> &items,int index=0)
{
if(index>=items.size())
{
return 0;
}
int current=items.at(index);
return max(current,getMax(items,++index));
}
//3 Longest Common Subsequence
int LCS(string &str1,string &str2,int a=0,int b=0)
{
if(a>=str1.length() || b>=str2.length())
{
return 0;
}
if(str1[a]==str2[b])
{
//if match increase both a and b
return 1+LCS(str1,str2,a+1,b+1);
}
return max(LCS(str1,str2,a+1,b),LCS(str1,str2,a,b+1));
}
//4 Longest common substrings in two string
int LCSubStr(string &str1,string &str2,int a=0,int b=0,int cout=0)
{
if(a>=str1.length() || b>=str2.length())
{
return 0;
}
if(str1[a]==str2[b])
{
//if match increase both a and b
cout+=1;
return max(cout,LCSubStr(str1,str2,a+1,b+1,cout));
}
return max(cout,max(LCSubStr(str1,str2,a+1,b,0),LCSubStr(str1,str2,a,b+1,0)));
}
//5 sum digit
int sumDigits(int value)
{
if(value==0)
{
return 0;
}
int r=value%10;
value/=10;
return r+sumDigits(value);
}
//6 group sum
bool groupSum(int startIndex,vector<int> &data,int target)
{
if(startIndex >= data.size())
return target == 0;
if(groupSum(startIndex+1, data, target - data[startIndex]))
return true;
if(groupSum(startIndex+1, data, target))
return true;
return false;
}
working sample->
Comments
Post a Comment