您的位置:首页 > 其它

2012华为2011年9月17日上机题目之最长回文

2011-09-17 23:06 330 查看
一段字符串中提取最长的回文长度:

浅显易懂的想法就是假设任何一个位置的字符为回文中心,进行两个方向的扩散,进而提取最长回文。

这是最朴素的想法:

代码如下:

1 #include <iostream>

2 #include <string>

3 using namespace std;

4

5 char str[100]="abbbbaaa";

6

7

8 //如果是回文长度是偶数个

9 int getMidtwoNum(char* s,int length,int index)

{

int re=1;

int t=index,b=index+1;

while(t>=0&&b<length&&s[t]==s[b])

{

if(t==index)

re++;

else

re+=2;

b++;

t--;

}

return re;

}

//回文长度是奇数个

int getMidoneNum(char* s,int length,int index)

{

int re=1;

int t=index-1,b=index+1;

while(t>=0&&b<length&&s[t]==s[b])

{

re+=2;

b++;

t--;

}

return re;

}

int getLhw(char* s)

{

int length=strlen(s);

int re=0;

int temp=0;

for(int i=0;i<length;i++)

{

temp=max(getMidoneNum(s,length,i),getMidtwoNum(s,length,i));

if(temp>re)

{

re=temp;

}

}

return re;

}

int main()

{

cout<<getLhw(str)<<endl;

getchar();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: