对称子字符串的最大长度
2011-04-29 15:58
295 查看
题目描述:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。
这个WP都出了一点小问题。真想挖个地洞,把自己深埋……
这个WP都出了一点小问题。真想挖个地洞,把自己深埋……
#include<stdio.h> #include<string.h> bool isPlalindrome(char *s, int begin, int end) { while( begin<=end ) { if(*(s+begin) == *(s+end)) { begin++; end--; } else return false; } return true; } int main() { char s[100]; while( scanf("%s", s) != EOF ) { int MaxLengthPlalindrome = -1, i, j, len, MaxLengthPlalindromeBegin, MaxLengthPlalindromeEnd;//MaxLengthPlalindrome不能初始化为0,否则,对于回文串长度为1的将不能正常得到结果 len = strlen(s); for(i=0; i<len; ++i) { for(j=len-1; j>=i; --j) { if( j-i <= MaxLengthPlalindrome ) { break; } else { if( isPlalindrome(s, i, j) ) { MaxLengthPlalindrome = j - i; MaxLengthPlalindromeBegin = i; MaxLengthPlalindromeEnd = j; } } } } printf("%d ", MaxLengthPlalindromeEnd - MaxLengthPlalindromeBegin + 1);//回文串的长度 for(i=MaxLengthPlalindromeBegin; i<=MaxLengthPlalindromeEnd; ++i)//打印回文串 printf("%c", s[i]); printf("/n/n"); } return 0; } /*******************测试数据*********************/ /**************************************** google 4 goog ILOVELCQQCLEVOLI 16 ILOVELCQQCLEVOLI hello 2 ll world 1 w ***************************************/
相关文章推荐
- 面试训练对称子字符串的最大长度
- 对称子字符串的最大长度
- 求对称子字符串的最大长度
- 对称子字符串的最大长度(程序员面试题精选100题)
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 程序员面试题精选100题(46)-对称子字符串的最大长度
- 对称子字符串的最大长度
- 程序员面试题精选100题(46)-对称子字符串的最大长度
- 对称子字符串的最大长度
- 算法题36 对称子字符串的最大长度
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 对称子字符串的最大长度[算法]
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
- 面试46题 对称子字符串最大长度