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();
}
浅显易懂的想法就是假设任何一个位置的字符为回文中心,进行两个方向的扩散,进而提取最长回文。
这是最朴素的想法:
代码如下:
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();
}
相关文章推荐
- 2012华为2011年9月17日上机题目之最长回文
- 2012华为2011年9月17日上机题目之约瑟夫环模拟法实现程序
- 2012华为2011年9月17日上机题目之约瑟夫环模拟法实现程序
- 2012华为校园招聘上机考试题目
- 2012华为成都上机题目C++编程
- 2012 届华为校园招聘上机考试题目(9 月 6 日下午 1 点场)
- 2012华为校园招聘上机笔试题
- 2012华为校园招聘上机试题大全及答案(软件)
- 2012届华为校园招聘上机考试题目(9月6日下午1点场)
- 华为2012校园招聘 上机考试2
- 华为上机题目-3
- 华为上机题目之数组比较
- 2014华为校园招聘上机测试题目(华科提前批)
- 2012届华为校园招聘上机考试题目
- 华为校园招聘上机考试题目
- 2012届华为校园招聘上机考试题目第2题——排序问题
- 华为2012校园招聘 上机考试1
- 2012届华为上机考试题目
- [Jobdu] 题目1528:最长回文子串
- 华为北京地区上机考试题2012