判断字符串及其子串是否是包含回文字,如果包含输出长度。
2015-04-19 13:30
260 查看
例如:str=helloworld 输出 3 (owo)
注:回文串有两种 类型:
类型一、abcba 类型二、abccba
算法思想:为从第二个元素开始顺序遍历字符串。1.查看第i个字符是否和第i-1个相等,相等符合类型二 处理。2.如果1不满足在查看i两边元素是否相等,相等符合类型一,否则i++。
代码如下:
#include<cstring>
#include<iostream>
using namespace std;
int hui_wen(string str,int &begin,int &end)
{
int temp,sum=1,l,h;
int len=str.length();
for(int i=1;i<len-1;i++)
{
l=i-1;
h=i+1;
temp=1;
if(str[i]!=str[l])
{
while((l>=0&&h<len)&&(str[l]==str[h]))
{
l--;
h++;
temp+=2;
}
if(temp>sum)
{
sum=temp;
begin=l+1;
end=h-1;
}
}
else
{
l--;
temp++;
while((l>=0&&h<len)&&(str[l]==str[h]))
{
l--;
h++;
temp+=2;
}
if(temp>sum)
{
sum=temp;
begin=l+1;
end=h-1;
}
}
}
if(sum==1)
return 0;
else
return sum;
}
int main()
{
int begin,end;//记录回文在字符串中的起点和终点
string str;
cin>>str;
int temp=hui_wen(str,begin,end);
if(temp!=0)
{
cout<<"hui wen string:"<<str.substr(begin,end-begin+1)<<" length:"<<temp<<endl;
//substr(m,n)表示起点坐标为m,长度为n-m。[ , ) 。
}
else
{
cout<<"no hui wen string"<<endl;
}
return 0;
}
注:回文串有两种 类型:
类型一、abcba 类型二、abccba
算法思想:为从第二个元素开始顺序遍历字符串。1.查看第i个字符是否和第i-1个相等,相等符合类型二 处理。2.如果1不满足在查看i两边元素是否相等,相等符合类型一,否则i++。
代码如下:
#include<cstring>
#include<iostream>
using namespace std;
int hui_wen(string str,int &begin,int &end)
{
int temp,sum=1,l,h;
int len=str.length();
for(int i=1;i<len-1;i++)
{
l=i-1;
h=i+1;
temp=1;
if(str[i]!=str[l])
{
while((l>=0&&h<len)&&(str[l]==str[h]))
{
l--;
h++;
temp+=2;
}
if(temp>sum)
{
sum=temp;
begin=l+1;
end=h-1;
}
}
else
{
l--;
temp++;
while((l>=0&&h<len)&&(str[l]==str[h]))
{
l--;
h++;
temp+=2;
}
if(temp>sum)
{
sum=temp;
begin=l+1;
end=h-1;
}
}
}
if(sum==1)
return 0;
else
return sum;
}
int main()
{
int begin,end;//记录回文在字符串中的起点和终点
string str;
cin>>str;
int temp=hui_wen(str,begin,end);
if(temp!=0)
{
cout<<"hui wen string:"<<str.substr(begin,end-begin+1)<<" length:"<<temp<<endl;
//substr(m,n)表示起点坐标为m,长度为n-m。[ , ) 。
}
else
{
cout<<"no hui wen string"<<endl;
}
return 0;
}
相关文章推荐
- 给定一个字符串,判断该字符串中是否包含某个子串.如果包含, 求出子串的所有出现位置
- Python判断一个字符串是否包含子串的几种方法
- mysql判断一个字符串是否包含某子串
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 输入一行子串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置
- dos中如何查找一个字符串是否包含在某个文件中,如果有则将该文件名输出
- Oracle PLSQL Demo - 22.查看字符串的长度[lengthb, length],判断字符串是否包含中文
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- Python判断一个字符串是否包含子串的几种方法
- JAVA中查询一个词在内容中出现的次数、判断集合中是否包含关键字、查询字符串数组单个字符的长度
- 判断字符串中是否包含某些子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- java中判断一个字符串是否包含另外一个字符串,如果包含,计算出字符串的开始位置
- C语言的字符串转为OC中的字符串,控制台输入用户名和密码,判断输入的用户名是否是@“Frank”, 密码 是否是 @“lanou”, 如果用户名和密码都正确,则输出登录成功, 否则输出登录失败.
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- 紫书章七例五 Krypton Factor UVA - 129(dfs)判断一个字符串中是否包含两个相邻子串
- mysql判断一个字符串是否包含某子串
- 判断字符串是否包含子串 python
- java 判断字符串是否包含子串的方法