求字符串中最长对称字符串的长度

求字符串中最长对称字符串的长度,
例如google中最长对称字符串的个数是4
iqiyiyiq中最长对称字符串的个数是6;
这种题目呢,不知道如何用语言表达清楚自己的思路,也许是自己理解的不够清楚吧,但是这种题目利用具体事例就可以将代码写出来;
代码如下:

#include<iostream>
#include<string>
using namespace std;
int isSymmetry(string str,int start)
{
    int end=str.length()-1;
    int result=start;
    bool flag=false;
    while(start<end)
    {


        if(str[start]==str[end])
        {
            if(!flag) result=end;
            flag=true;
            ++start;
            --end;
        }
        else
        {
            if(flag) break;
            else--end;
        }
    }
    if(start>=end) return result;
    else return-1;
}
int theLenofSymStr(string str)
{
    int len=str.length();
    int maxLen=1;
    for(int i=0;i<len;++i)
    {
        int index=isSymmetry(str,i);
        if(index!=-1)
        {
            int len=index-i+1;
            if(maxLen<len)
                maxLen=len;
        }
    }
    return maxLen;

}
int main()
{
    string str;
    while(cin>>str)
    {
        cout<<theLenofSymStr(str)<<endl;
    }

}

感觉自己的代码有很多的冗余,冗余冗余^
感觉逻辑上还有很多不足之处感觉自己还需要努力
虽然结果是正确的,但是还是要缅怀下我的爱奇艺笔试,为啥不在敏捷点敏捷点敏捷点
陈小白还要再努力才行啊

阅读更多
个人分类: 数据结构 C++刷题
上一篇给定一个长度为N的数组,找出一个最长的单调自增子序列
下一篇0-1背包问题分析及代码实现
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭