算法题36 对称子字符串的最大长度
2011-05-22 04:16
225 查看
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
// 求最长对称子字符串 O(n^2) // 思路:在搜索对称子字符串的同时计算其长度 char* GetLongestSymmetrySubstring(const char* pStr) { if(pStr == NULL) return NULL; char buffer[1024]; memset(buffer, 0, 1024); buffer[0] = *pStr; int maxLength = 1; const char* pChar = pStr + 1; while(*pChar != '\0') { // 对称字符串的长度可以是奇数也可以是偶数 // 对称字符串是奇数的情形 const char* pFirst = pChar - 1; const char* pLast = pChar + 1; while(pFirst > pStr && *pLast != '\0' && *pFirst == *pLast) { --pFirst; ++pLast; } int newLength = pLast - pFirst - 1; if(newLength > maxLength) { maxLength = newLength; memcpy_s(buffer, newLength, pFirst + 1, newLength); } // 对称字符串是偶数的情形 pFirst = pChar; pLast = pChar + 1; while(pFirst > pStr && *pLast != '\0' && *pFirst == *pLast) { --pFirst; ++pLast; } newLength = pLast - pFirst - 1; if(newLength > maxLength) { maxLength = newLength; memcpy_s(buffer, newLength, pFirst + 1, newLength); } pChar++; } return buffer; }
相关文章推荐
- 算法: 求一个字符串中对称子字符串的最大长度即最长回字符串
- 对称子字符串的最大长度[算法]
- 程序员面试题精选100题(46)-对称子字符串的最大长度[算法]
- 【算法25】对称子字符串的最大长度
- 求对称子字符串的最大长度
- 对称子字符串的最大长度
- 基于STL的字符串最大长度匹配算法
- C#算法函数:获取一个字符串中的最大长度的数字
- 对称子字符串的最大长度
- 对称子字符串的最大长度
- 对称子字符串最大长度
- 求解最大回文字符串长度 — 三种算法
- 对称子字符串的最大长度(程序员面试题精选100题)
- 对称子字符串的最大长度
- 数据结构练习(34)对称子字符串的最大长度
- 实现简易字符串压缩算法:一个长度最大为128的字符串, 由字母a-z或者A-Z组成,将其中连续出现2次以上(含2次)的字母转换为字母和出现次数,以达到压缩目的
- 对称字符串的最大长度 — 曼彻斯特算法
- 对称子字符串的最大长度
- 程序员面试题精选100题(46)-对称子字符串的最大长度
- 对称子字符串的最大长度