string longestPalindrome(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int len = s.size(); vector<int> isAPalindrome(len,true); int start = 0; int maxLength = 1; for (int i = len-1; i>=0; i--) for (int j = len-1; j > i; j--) { if (i+1 > j-1) isAPalindrome[j] = s[i] == s[j]; else isAPalindrome[j] = s[i] == s[j] && isAPalindrome[j-1]; if (isAPalindrome[j]) { if (j-i+1 > maxLength) { maxLength = j-i+1; start = i; } } } return s.substr(start, maxLength); }
string longestPalindrome(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int len = s.size(); vector<vector<int> > isAPalindrome(len, vector<int>(len,true)); int start = 0; int maxLength = 1; for (int l = 2; l <= len; l++) { for (int i = 0; i <= len - l; i++) { int j = i + l - 1; if (i+1 > j-1) isAPalindrome[i][j] = s[i] == s[j]; else isAPalindrome[i][j] = s[i] == s[j] && isAPalindrome[i+1][j-1]; if (isAPalindrome[i][j]) { start = i; maxLength = l; } } } return s.substr(start, maxLength); }
bool isInterestingRange(int leftInclusive, int rightInclusive) { int numberOfPalindromes = 0; for (int left = leftInclusive; left <= rightInclusive; left++) { if (isAPalindrome(left)) { numberOfPalindromes++; } } return (numberOfPalindromes % 2 == 0); }