UVA 12718 Dromicpalin Substrings(寻找字符串连续子串的回文)
2014-07-01 19:24
267 查看
转载请注明出处:http://blog.csdn.net/u012860063
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4456
![](http://img.blog.csdn.net/20141129210346906?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg2MDA2Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
题意:寻找给出字符串的子串中是回文的个数(注意:字串中字母换位置后能组成回文也要算在内,例如:aab之类的可以换位置为:aba 也是一个回文)。
思路:只需统计每个字母出现的次数,再统计出现次数中为奇数的个数,如果某个子串中出现奇数次数的字母仅有一个或者没有,那么就符合题目要求!
代码如下:
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4456
题意:寻找给出字符串的子串中是回文的个数(注意:字串中字母换位置后能组成回文也要算在内,例如:aab之类的可以换位置为:aba 也是一个回文)。
思路:只需统计每个字母出现的次数,再统计出现次数中为奇数的个数,如果某个子串中出现奇数次数的字母仅有一个或者没有,那么就符合题目要求!
代码如下:
#include <cstdio> #include <cstring> int main() { int t, cont, i, j; char s[1047]; int c[47]; int cas =0; while(~scanf("%d",&t)) { getchar(); while(t--) { gets(s); int len = strlen(s); int k = len; for(i = 0; i < len; i++) { cont = 1; memset(c,0,sizeof(c)); c[s[i]-'a']++; for(j = i+1; j < len; j++) { c[s[j]-'a']++; if((c[s[j]-'a'])%2 == 1) cont++; else cont--; if(cont == 1 || cont == 0)//出现奇数次数的字母有一个或者没有 k++; } } printf("Case %d: %d\n",++cas,k); } } return 0; }
相关文章推荐
- UVa 12718 Dromicpalin Substrings (暴力)
- UVA 12718 Dromicpalin Substrings
- UVA 12718 Dromicpalin Substrings
- 寻找一个字符串中连续出现次数最多的子串
- 连续子串中出现超过一半次数的字符串 后缀数组 uva 11107 Life Forms
- 寻找字符串中连续出现次数最多的子串
- 寻找一个字符串中连续出现次数最多的子串
- UVALive 6659 Dromicpalin Substrings (递推 + 暴力枚举)
- UVALive 6659 Dromicpalin Substrings 枚举判断
- 笔试——字符串算法题——寻找最大回文子串
- UVA - 10617 Again Palindrome 字符串的回文子串
- 寻找一个字符串中连续出现次数最多的子串(面试宝典14.5节面试题1)
- 寻找一个字符串中连续出现次数最多的子串
- UVALive 6659 Dromicpalin Substrings
- 寻找一个字符串中连续出现次数最多的子串
- 寻找一个字符串中连续出现次数最多的子串
- 寻找一个字符串中连续出现次数最多的子串
- 求一个字符串中连续出现次数最多的子串
- 找出一个字符串中最长连续相同子串
- 求一个字符串中连续出现次数最多的子串