寻找输入的回文字符串并输出!!
2014-04-26 20:39
169 查看
/* *函数功能:提取给定字符串中的回文字符串 *算法复杂度:O(n^2) *返回:找到了回文字符串就输出,找不到就什么都不输出 *限制:认定大小写的字符有区别,认定空格等特殊字符会影响回文串的判定 *说明:对回文字符串的重叠现象(eg:abcdedcbcd)做了处理,平时我们很容易忽视这一点 *思路:2个迭代器变量,一个从前往后遍历(i),另一个从后向前找相同字符(position),找到相同字符 就判断两个字符间的字符串是否是回文字符串,如果是,则把positon存起来,用来和下次的遍历作比较,因为 回文字符串的字串也可看作回文串;否则,进入下一次循环。 */ #include <stdio.h> #include <string.h> #define MAXSIZE 1024 typedef enum {false, true} bool; int GetSameChar(char a[], char ch, int startpos ,int endpos); bool IsSymmetry(char a[], int startpos, int endpos); void GetSymmetry(char a[]); int main() { char a[MAXSIZE] = {0}; scanf("%s", a); GetSymmetry(a); return 0; } //寻找相同字符并返回索引值 int GetSameChar(char a[], char ch, int startpos ,int endpos) { endpos--; while((a[endpos]) != ch && endpos > startpos) { endpos--; } if(startpos == endpos) return 0; else return endpos; } //判断一个字符是否是回文字符串 bool IsSymmetry(char a[], int startpos, int endpos) { if(endpos <= startpos) return false; for(startpos++,endpos--; startpos < endpos; startpos++,endpos--) { if(a[startpos] != a[endpos]) return false; } return true; } //获取一串字符中的回文字符 void GetSymmetry(char a[]) { const int SIZE = strlen(a); int i,position,oldposition; oldposition = 0; //avoid partion for(i=0; i<SIZE; i++) { position = SIZE; while((position=GetSameChar(a, a[i], i, position)) != 0) { if(position <= oldposition) break; if(IsSymmetry(a, i, position)) { oldposition = position; printf("Find it! From %2d to %2d : ", i, position); int tmp = i; for(; tmp<=position; tmp++) printf("%c", a[tmp]); printf("\n"); break; } } } }
相关文章推荐
- 判断回文 输入字符串 输出是否为回文
- 把字符串中的每个空格替换程“%20”,例如输入“I love my hometown”,输出为”I%20love%20my%20hometown”
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(三)
- 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- 在主函数中输入10个的字符串,用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。
- 键盘输入一行字符串,每个单词倒序输出
- 对输入的字符串进行反转并显示结果,例如输入字符串为hello,则程序应输出olleh。
- 输出任意字符串中最长的回文长度
- C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
- 输入6个字符串,并对它们按从大到小的顺序排序后输出
- 第20题: 题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。
- 一个常见面试题: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个。
- 将键盘输入的字符串送到用户自定义的数据缓存区中并输出
- c primer plus 5 ch4 字符串和格式化输入/输出
- 剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
- 输入四个字符串然后按大到后输出。
- 从键盘输入任意字符串,判断其是否是回文字符串。
- 输入三个字符串,按由小到大的顺序输出
- 数组_习题:将输入的字符串逆序输出
- C#--第2周实验--创建一个控制台应用--输入并输出一行字符串