程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
来源:互联网 发布:网络枪机套什么定额 编辑:程序博客网 时间:2024/05/21 19:46
题目来自BMY BBS算法版,原题如下:
不仅能判断规则的中心对称,如123454321,还要能判断如123456547890中的45654的不规则部分中心对称
算法思想
从第一个字符开始,逐个扫描,对每一个字符,查找下一个相同字符,判断这两个字符之间的字符串是否回文。时间复杂度O(n^3),所以说是笨笨解,师弟说可以做到O(n^2)...
算法实现
/*================================================================================
功能:判断字符串是否是回文字符串或者是否含有回文字符子串
作者:sunnyrain
日期:2008-09-11
编译环境:VC++6.0
==================================================================
#include<iostream>
using namespace std;
int find(char ch,char *str,size_t length) //查找str开始的字符串中第一个ch出现的位置,没找到返回-1
{
for(int i=0;i<length;i++)
{
if(ch == str[i])
return i;
}
return -1;
}
int isSym(char *str,size_t length) //判断一个字符串是否全对称,0对称,-1不对称
{
for(int i=0;i<length/2;i++)
{
if(str[i] != str[length-i-1])
return -1;
}
return 0;
}
int isSymmetry(char *str,size_t length)//返回0表示全部对称,-1表示无对称,其他值表示局部对称起始位置
{
int begin=0,end;
char ch;
for(int i=0;i<length;i++)
{
ch = str[i];
begin = end = i;
while((begin = find(ch,str+end+1,length-end-1)) != -1)
{
end = begin+end+1;
if(isSym(str+i,end-i+1) == 0)
return i;
}
}
return -1;
}
int main()
{
char aa1[] = "123454321";
char aa2[] = "123456547890";
char aa3[] = "781234327891";
char aa4[] = "954612313217891";
cout<<isSymmetry(aa1,sizeof(aa1)/sizeof(char)-1)<<endl;
cout<<isSymmetry(aa2,sizeof(aa2)/sizeof(char)-1)<<endl;
cout<<isSymmetry(aa3,sizeof(aa3)/sizeof(char)-1)<<endl;
cout<<isSymmetry(aa4,sizeof(aa4)/sizeof(char)-1)<<endl;
return 0;
}
- 程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
- 判断字符串是否是回文字符串或者是否含有回文字符子串
- 每天一道算法题1 判断字符串是否是回文字符串或者是否含有回文字符子串
- 判断是否是回文数字或者回文字符串
- 判断字符串是否是回文
- 判断字符串是否是回文
- 判断字符串是否是回文
- C++ 判断是否是子字符串和回文字符串
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 队列-----判断一个字符串是否是回文
- 判断一个字符串是否是“回文”数字
- 判断一个字符串是否是回文。
- The Journey of the Lunch Launcher and Store and Forward Messaging
- 文件批处理器bat_do V0.0.0003 beta4 说明与下载
- XOOPS - Theme主题风格
- Introduction to COM - What It Is and How to Use It.
- 水煮TCPMP
- 程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
- JSP Struts之HTML标签库详解
- 阻碍GIS产业发展的三大问题
- Linux 下创建守护进程
- 程序员面试题精选(38):2008百度校园招聘的一道笔试题
- Windows API一日一练(73)GetVersionEx函数
- 根据登陆显示相应状态 --自定义控件
- 也做技术
- 程序员面试题精选(39):一道autodesk笔试题求解