每天一道算法题1 判断字符串是否是回文字符串或者是否含有回文字符子串
来源:互联网 发布:网络系统集成结课论文 编辑:程序博客网 时间:2024/06/05 05:33
第一道题,新的开始,坚持就是胜利,azaza fighting!
题目来自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)//返回原字符串长度表示全部对称,-1表示无对称,其他值表示局部对称起始位置
{
if (isSym(str, lenght) == 0)
{
return length;
}
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;
}
- 每天一道算法题1 判断字符串是否是回文字符串或者是否含有回文字符子串
- 判断字符串是否是回文字符串或者是否含有回文字符子串
- 程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
- 判断是否是回文数字或者回文字符串
- 算法:判断字符串是否是回文的
- 判断字符串是否是回文
- 判断字符串是否是回文
- 判断字符串是否是回文
- 笔试题判断字符串是否是回文
- C++ 判断是否是子字符串和回文字符串
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 判断字符串是否回文
- 设计一个算法判断一个字符串是否是回文
- Interbase6.5 Inno 安装脚本
- 虚函数实现多态(笔记整理)
- (JAVA 自学笔记)枚举续
- How to build x264/libx264.dll in Windows
- MFC中CString转换成char数组的问题
- 每天一道算法题1 判断字符串是否是回文字符串或者是否含有回文字符子串
- android中ViewGroup中onMeasure()方法 .
- 设计模式六大原则(1):单一职责原则
- Node.js Web Sockets and iOS
- android framework audio分析
- ViewGroup measure layout
- Spring实现定时启动任务
- 并发学习之:多线程编程中条件变量和虚假唤醒的讨论
- 提升Android应用视觉效果的10个UI设计技巧