Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"answer :
class Solution {
public:
string longestPalindrome(string s) {
vector<string> result;
for(int i = 1; i < s.length(); i ++){
if(s[i] == s[i - 1]){
string temp = "0";
temp += s[i];
for(int j = i + 1; j < s.length(); j ++){
int opp = i - 1 - (j - i);
if(opp >= 0 && (s[j] == s[i - 1 - (j - i)]))
temp += s[j];
else break;
}
result.push_back(temp);
// cout << temp << endl;
}
if((i > 1) && (s[i] == s[i - 2])){
string temp = "";
temp += s[i - 1];
temp += s[i];
for(int j = i + 1;j < s.length(); j ++){
int opp = i - 2 - (j - i);
if(opp >= 0 &&(s[j] == s[opp]))
temp += s[j];
else break;
}
result.push_back(temp);
// cout << temp << endl;
}
}
vector<string>::iterator it = result.begin();
int max = 0;
string temp = "",final = "";
int length;
while(it != result.end()){
string str1 = *it;
length = str1.length() * 2 -1;
if(str1[0] - '0' ==0) length = length - 1;
if(length > max){
max = length;
temp = *it;
}
it ++;
}
if(max != 0){
for(int i = temp.length() - 1; i > 0; i --){
final += temp[i];
}
if(temp[0] - '0' != 0) final += temp[0];
final.append(temp,1,temp.length() - 1);
}
else final = s[0];
return final;
}
};