예제 #1
0
    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);
    }
예제 #2
0
    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);
    }
예제 #3
0
bool isInterestingRange(int leftInclusive, int rightInclusive) {
  int numberOfPalindromes = 0;
  for (int left = leftInclusive; left <= rightInclusive; left++) {
    if (isAPalindrome(left)) {
      numberOfPalindromes++; 
    } 
  }
  return (numberOfPalindromes % 2 == 0);
}