您的位置:首页 > 其它

46. 对称子字符串的最大长度(ToDo)

2014-05-21 20:33 344 查看
【题目】

输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。

【分析】

可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。

引子】

判断字符串是否对称

要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称的。否则我们接着判断里面的两个字符是不是相等,以此类推。基于这个思路,我们不难写出如下代码:

C++ Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
////////////////////////////////////////////////////////////////

// Whether a string between pBegin and pEnd is symmetrical?

////////////////////////////////////////////////////////////////

bool IsSymmetrical(char *pBegin, char *pEnd)

{

if(pBegin == NULL || pEnd == NULL || pBegin > pEnd)

return false;

while(pBegin < pEnd)

{

if(*pBegin != *pEnd)

return false;

pBegin++;

pEnd --;

}

return true;

}
要判断一个字符串pString是不是对称的,我们只需要调用IsSymmetrical(pString, &pString[strlen(pString) – 1])就可以了。

ToDo:

Suffix Tree?

【参考】

http://zhedahht.blog.163.com/blog/static/25411174201063105120425/

/article/1422821.html

/article/5255331.html

http://www.ibaiyang.org/2013/01/06/suffix-tree-introduction/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: