C语言:判断一段含有空格并以英语句号后要空格吗结尾的英文(全大写)是否是回文?

& 相关文章 &
【HihoCoder】最长回文子串
按照我给你的顺序依次输出到标准输出就可以了!你看这就是一个例子。” 样例输入 3 abababa aaaabaa acacdas 样例输出 7 5 3
最长回文子串:一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦!
方法一暴力法(60分) 遍历字符串S的每一个子串,去判断这个子串是不是回文,是回文的话看看长度是不是比最大的长度maxlength大。遍历每一个
回文数系列题目(经典算法)
} 最长回文子串 时间限制: 1000 ms
内存限制: 65535 KB 难度: 4 描述 输入一个字符串,求出其中最长的回文子串。子串的含义是:在原串连续出现的字符串片段。回文的含义是:正着看和倒着看是相同的,如abba和abbebba。在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。输入字符串长度大于等于1小于等于5000,且单独占一行(如果有多组答案,输出第一组)。 输入 输入一个测试数据n(1&=n&=10); 随后有n行,每行有一个
Longest Palindrome (最长回文子串)
原文链接:链接地址 一个序列(字符串)S=a1a2...an 的倒置 S' 为 anan-1...a1。而 S 的子串定义为 S 中任何连续的一部分,如 aiai+1...aj 是 S 的一个子串,但aiai+2... 则不是 S 的子串。如果一个序列 S=S',则 S 称为回文序列。本文接下来将研究一个有趣的问题:给定一个序列 S,找出 S 中最长的回文子串。
在详细分析各个算法之前,先给出一个概览:简单的暴力算法时间复杂度为 ?(n3)。经过仔细分析,可以通过动态规划把复杂度降至 O
第11周项目6-回文、素数 回文数
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 完成日期:2014年 11 月 6 日
* 版 本 号:v1.0
* 问题描述:编译isPalindrome(),用于判断参数是否是回文数(即从前往后和从后往前读都一样的数); * 输入描述: 输入一个数;
* 程序输出:判断并输出这个数是否为回文数
又学了点java编程的技巧,关于编程语言中与用户交互对话框的应用
~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如1都回文数。
*回文数定义: "回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
例如:在自然数中,最小的回文数是0,其次是1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,101····
* 程序头部的注释结束
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved. * 文件名称:编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是 *将该数含有的数字逆序排列后得到的数和原数相同, *例如1都回文数。代码附后 * 作
在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题: 在文本T里查询T是否包含子串P(复杂度同流行的KMP相当)。 文本T里找出最长重复子串。比如abcdabcefda里abc同da都重复出现,而最长重复子串是abc。 找出字符串S1同S2的最长公共子串。注意不是常用作动态规划例子的LCS哈。比如
在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题: 在文本T里查询T是否包含子串P(复杂度同流行的KMP相当)。 文本T里找出最长重复子串。比如abcdabcefda里abc同da都重复出现,而最长重复子串是abc。 找出字符串S1同S2的最长公共子串。注意不是常用作动态规划例子的LCS哈。比如
NYOJ-132-最长回文子串-日21:49:03
最长回文子串 时间限制: 1000 ms
内存限制: 65535 KB 难度: 4 描述 输入一个字符串,求出其中最长的回文子串。子串的含义是:在原串连续出现的字符串片段。回文的含义是:正着看和倒着看是相同的,如abba和abbebba。在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。输入字符串长度大于等于1小于等于5000,且单独占一行(如果有多组答案,输出第一组)。 输入 输入一个测试数据n(1&=n&=10); 随后有n行,每行有
Time Limit: 1Sec
MemoryLimit: 64 MB Submit:165
Solved: 76 [Submit][Status][WebBoard] Description “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。 Input 输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串,每个字符串的长度不超过500。 Output 如果
],id=1,mx=1&2,故初始化P[2]=0,接下来匹配是否有回文字符串,即依次对P[2]向两侧展开,检查P[2]是否有相等的字符,可以得出P[2]还是为0;计算P[3],id=2,mx=2&3,初始化P[3]=0,同样检查P[3]的两侧,计算出P[3]=2;接下来计算P[4],id=3,mx=5&4,这是可以得出P[4]&=min(P[2*3-4],5-4),即这时P[4]的最小值为0,这时5-4&P[2*3-4],故P[4]=P[2*3-4]=0;计算P[5],id=3,mx=5&=5,故
蓝桥杯 【基础练习】 特殊回文数
:特殊回文数 问题描述   123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式   输入一行,包含一个正整数n。 输出格式   按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 989 998899 数据规模和约定   1&=n&=54。 思路:特殊回文数不但要求该数字为回文数,还要求该数字每一位数字的和相加等于一个数,而且该题目包含了四位
java采用3种方式判断用户输入的字符串是否为回文
一、描述 回文的定义:"回文数" 就是正读倒读都一样的整数。如奇数个数字:98789, 这个数字正读是98789,倒读也是98789;偶数个数字3223也是回文数。 我们今天将回文数扩展为字母和数字组合回文,如adgu6776ugda也是回文,我们采用三种方式判断这种类型的字符串是否为回文: 1.调用StringBuffer类对象的reverse()方法,将字符串翻转后与之前的字符串比较,如果相等则为回文,反之亦然; 2.采用low和high两个变量分别对应字符串对称位置的index,所有对称
判断参数是否是回文数
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
者: 李家豪
* 完成日期:2013 年11月13日
* 版 本 号:v1.0
* 问题描述:判断参数是否是回文数——回文数,即从前往后读和从后往前读都一样的数,如都是回文数,而都不是回文数。
* 样例输入:1234
* 样例输出:1234不是回文数。回文有什么好!
* 问题分析:。
#include &iostream
关于回文串的点点滴滴.
  还是第一次发博文呢.嗯,最近在尝试每天做一道编程题,当然,我要求自己只能用C语言实现.一方面可增加自己对C函数库的熟悉程度,另一方面也想增加自身的编码经验.毕竟,感觉平时Code的时间严重不够.对于一个职业Coder来说这样肯定不太好嘛!   好吧,回到正题吧.今天的题目内容很常规.就是判断用户输入的字符串是否是一个回文串,当然,难度稍微增加那么点,就是同时能够在一个字符串中找到所有的回文子串同时输出.想必,关于回文串的定义就没什么可说的了吧,比如"abba"就是个回文串,此外,还要能找出
Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
如果一个字符串是回文串,则输出"yes",否则输出"no".
Sample Input
4 level abcde noon haha
acm--判断是否回文字符串
:2013年 12月3 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: 输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,
后面紧跟着是n个字符串,每个字符串的长度不超过500。
*问题描述:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串
的字符串是否是“回文”。
Input 输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output 如果一个字符串是回文串,则输出"yes",否则输出"no".
Sample Input
Sample Output
Author lcy
数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
这是一个不成熟的想法,博主只是觉得比较好的想法需要拿出来分享一下,对于长度为偶数的最长回文,可以采用这样一种思路求得:
将字符串中的字符从左至右逐个入栈,出现情况:1)若栈顶字符和要入栈的字符相同,则该字符不入栈且栈pop出栈顶字符,回文长度加一。2)若栈顶字符与要入栈的字符不相同,直接入栈。则依次入栈出栈,求最长连续出栈序列即可。 因为对于奇数长度的字符串,博主没有想到时间复杂度低的类似处理方法,所以这里就不写代码了,大家有好的解法或者思路欢迎留言。 链接
找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
的字符从左至右逐个入栈,出现情况:1)若栈顶字符和要入栈的字符相同,则该字符不入栈且栈pop出栈顶字符,回文长度加一。2)若栈顶字符与要入栈的字符不相同,直接入栈。则依次入栈出栈,求最长连续出栈序列即可。 因为对于奇数长度的字符串,博主没有想到时间复杂度低的类似处理方法,所以这里就不写代码了,大家有好的解法或者思路欢迎留言。 4)著名的Manacher’s Algorithm算法
算法首先将输入字符串S, 转换成一个特殊字符串T,转换的原则就是将S的开头结尾以及每两个相邻的字符之间
& 2012 - 2016 & aiuxian.com &All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";NOI 1.7编程基础之字符串(35题)
时间: 19:43:37
&&&& 阅读:1236
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
01:统计数字字符个数
总时间限制:&1000ms&内存限制:&65536kB描述
输入一行字符,统计出其中数字字符的个数。
输入一行字符串,总长度不超过255。输出输出为1行,输出字符串里面数字字符的个数。样例输入
Peking University is set up at 1898.
来源习题(7-1) 医学部 2010 期末试题 樊波
1 #include&cstdio&
2 #include&cstring&
3 char a[1000];
4 int main()
unsigned int i,count=0;
for(i=0;i&=strlen(a)-1;i++)
if(a[i]&=‘0‘&&a[i]&=‘9‘)
printf("%d",count);
02:找第一个只出现一次的字符
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入一个字符串,长度小于100000。输出输出第一个仅出现一次的字符,若没有则输出no。样例输入
1 #include&iostream&
2 #include&cstdio&
3 #include&cstring&
4 #include&algorithm&
5 using namespace
6 char s[103000];
7 int zj=0,flag=0,t;
8 struct node
int//字符出现次数
int//字符码
13 };node a[101],f[101];
14 int cmp(const node &p,const node &q)
return p.y&q.y;
18 int main()
scanf("%s",s+1);
int len=strlen(s+1);
for(int i=1;i&=30;i++)
a[t].x=0,a[t].y=99;
for(int i=1;i&=i++)
t=s[i]-96;a[t].x++;
if(a[t].x==1) a[t].y=i;
for(int i=1;i&=30;i++)
if(a[i].x==1) f[++zj].x=a[i].x,f[zj].y=a[i].y,f[zj].c=i,flag=1;
if(flag==1)
sort(f+1,f+zj+1,cmp);
putchar(f[1].c+96);
else printf("no");
03:基因相关性
总时间限制:&1000ms&内存限制:&65536kB描述
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。输出若两条DNA序列相关,则输出&yes&,否则输出&no&。样例输入
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char a[501],b[501];
6 double p,ans=0;
7 int main(){
scanf("%s%s",a,b);
int len=strlen(a),i=0;
while(i&len){
if(a[i]==b[i]) ans++;
printf("%s\n",ans/l&p?"yes":"no");
04:石头剪子布
总时间限制:&1000ms&内存限制:&65536kB描述
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于&意外&与&技术&两种特性,深受世界人民喜爱。&游戏规则:石头打剪刀,布包石头,剪刀剪布。&现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入输入包括N+1行:第一行是一个整数N,表示一共进行了N次游戏。1 &= N &= 100。接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头、剪子或者是布):S1 S2字符串之间以空格隔开S1,S2只可能取值在{"Rock", "Scissors", "Paper"}(大小写敏感)中。输出输出包括N行,每一行对应一个胜利者(Player1或者Player2),或者游戏出现平局,则输出Tie。样例输入
Rock Scissors
Paper Paper
Rock Paper
提示Rock是石头,Scissors是剪刀,Paper是布。
1 #include&cstdio&
2 #include&cstring&
3 using namespace
4 int a[10];
5 char s1[100],s2[100];
6 int main()
scanf("%d",&n);
for(i=1;i&=n;++i)
scanf("%s",s1);
scanf("%s",s2);
if (s1[0]==‘R‘)
if(s2[0]==‘R‘) a[i]=0;
if(s2[0]==‘S‘) a[i]=1;
if(s2[0]==‘P‘) a[i]=2;
if (s1[0]==‘P‘)
if(s2[0]==‘R‘) a[i]=1;
if(s2[0]==‘S‘) a[i]=2;
if(s2[0]==‘P‘) a[i]=0;
if (s1[0]==‘S‘)
if(s2[0]==‘R‘) a[i]=2;
if(s2[0]==‘S‘) a[i]=0;
if(s2[0]==‘P‘) a[i]=1;
if(a[i]==1) printf("Player1\n");
if(a[i]==2) printf("Player2\n");
if(a[i]==0) printf("Tie\n");
05:输出亲朋字符串
总时间限制:&1000ms&内存限制:&65536kB描述
编写程序,求给定字符串s的亲朋字符串s1。&亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最 后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。
输入输入一行,一个长度大于等于2,小于等于100的字符串。字符串中每个字符的ASCII值不大于63。输出输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。样例输入
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 #include&algorithm&
5 using namespace
6 #define N 521
7 char a[N],c[N];
8 int main(){
//freopen("sh.txt","r",stdin);
int len=strlen(a);
for(int i=0;i&len-1;i++)
c[i]=a[i]+a[i+1];
c[len-1]=a[0]+a[len-1];
06:合法 C 标识符
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
1. 非保留字;
2. 只包含字母、数字及下划线(&_&)。
3. 不以数字开头。
输入一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。输出一行,如果它是C语言的合法标识符,则输出yes,否则输出no。样例输入
RKPEGX9R;TWyYcp
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char s[501];
6 double p,ans=0;
7 int main(){
scanf("%s",s);
int len=strlen(s);
if(s[0]&=‘0‘&&s[0]&=‘9‘) {printf("%s\n","no");return 0;}
for(int i=0;i&i++)
if((s[i]&=‘0‘&&s[i]&=‘9‘)||(s[i]&=‘a‘&&s[i]&=‘z‘)||(s[i]&=‘A‘&&s[i]&=‘Z‘)||s[i]==‘_‘);
else {printf("%s\n","no");return 0;}
printf("%s\n","yes");
07:配对碱基链
总时间限制:&1000ms&内存限制:&65536kB描述
脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。
输入一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、C,分别表示腺瞟呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。字符串长度不超过255。输出一个只含有大写字母A、T、G、C的字符串,为与输入的碱基链互补的碱基链。样例输入
ATATGGATGGTGTTTGGCTCTG
TATACCTACCACAAACCGAGAC
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char s[501],c[501];
6 int main(){
scanf("%s",s);
int len=strlen(s);
for(int i=0;i&i++)
switch(s[i]){
case ‘T‘:c[i]=‘A‘;break;
case ‘A‘:c[i]=‘T‘;break;
case ‘G‘:c[i]=‘C‘;break;
case ‘C‘:c[i]=‘G‘;break;
08:字符替换
总时间限制:&1000ms&内存限制:&65536kB描述
把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串。
输入只有一行,由一个字符串和两个字符组成,中间用单个空格隔开。字符串是待替换的字符串,字符串长度小于等于30个字符,且不含空格等空白符;接下来一个字符为需要被替换的特定字符;接下来一个字符为用于替换的给定字符。输出一行,即替换后的字符串。样例输入
hello-how-are-you o O
hellO-hOw-are-yOu
1 #include&cstring&
2 #include&iostream&
3 using namespace
4 char c[30],a,b;
5 int main(){
cin&&c&&a&&b;
for(i=0;i&strlen(c);i++){
if(c[i]==a)c[i]=b;
for(i=0;i&strlen(c);i++)cout&&c[i];
09:密码翻译
总时间限制:&1000ms&内存限制:&65536kB描述
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。
输入输入一行,包含一个字符串,长度小于80个字符。输出输出每行字符串的加密字符串。样例输入
Hello! How are you!
Ifmmp! Ipx bsf zpv!
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char s[501];
6 int main(){
int len=strlen(s);
for(int i=0;i&i++){
if((s[i]&=‘a‘&&s[i]&=‘y‘)||(s[i]&=‘A‘&&s[i]&=‘Y‘)) {s[i]++;continue;}
if(s[i]==‘z‘) {s[i]=‘a‘;continue;}
if(s[i]==‘Z‘) {s[i]=‘A‘;continue;}
10:简单密码
总时间限制:&1000ms&内存限制:&65536kB描述
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。密文A B C D E F G H I J K L M N O P Q R S T U V W X Y Z明文V W X Y Z A B C D E F G H I J K L M N O P Q R S T U&你的任务是对给定的密文进行解密得到明文。你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。
输入一行,给出密文,密文不为空,而且其中的字符数不超过200。输出输出一行,即密文对应的明文。样例输入
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 using namespace
5 char c[261];
6 int main(){
ios::sync_with_stdio(false);
int len=strlen(c);
for(int i=0;i&i++)
if(c[i]&=‘A‘&c[i]&=‘Z‘)
if(c[i]-5&‘A‘) c[i]=‘Z‘-(5-(c[i]-‘A‘))+1;
else c[i]-=5;
for(int i=0;i&i++)
cout&&c[i];
总时间限制:&1000ms&内存限制:&65536kB描述
R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。
历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则:
1、&&&&S国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母&A&&&Z&构成(无空格等其他字母)。
2、&&&&S国对于每个字母规定了对应的&密字&。加密的过程就是将原信息中的所有字母替换为其对应的&密字&。
3、&&&&每个字母只对应一个唯一的&密字&,不同的字母对应不同的&密字&。&密字&可以和原字母相同。
例如,若规定&A&的密字为&A&,&B&的密字为&C&(其他字母及密字略),则原信息&ABA&被加密为&ACA&。
现在,小C通过内线掌握了S国网络上发送的一条加密信息及其对应的原信息。小C希望能通过这条信息,破译S国的军用密码。小C的破译过程是这样的:扫描原信息,对于原信息中的字母x(代表任一大写字母),找到其在加密信息中的对应大写字母y,并认为在密码里y是x的密字。如此进行下去直到停止于如下的某个状态:
1、&&&&所有信息扫描完毕,&A&&&Z&所有26个字母在原信息中均出现过并获得了相应的&密字&。
2、&&&&所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
3、&&&&扫描中发现掌握的信息里有明显的自相矛盾或错误(违反S过密码的编码规则)。例如某条信息&XYZ&被翻译为&ABA&就违反了&不同字母对应不同密字&的规则。
在小C忙得头昏脑胀之际,R国司令部又发来电报,要求他翻译另外一条从S国刚刚截取到的加密信息。现在请你帮助小C:通过内线掌握的信息,尝试破译密码。然后利用破译的密码,翻译电报中的加密信息。
输入共3行,每行为一个长度在1到100之间的字符串。第1行为小C掌握的一条加密信息。第2行为第1行的加密信息所对应的原信息。第3行为R国司令部要求小C翻译的加密信息。输入数据保证所有字符串仅由大写字母&A&&&Z&构成,且第1行长度与第2行相等。输出共1行。若破译密码停止时出现2,3两种情况,请你输出&Failed&(不含引号,注意首字母大写,其它小写)。否则请输出利用密码翻译电报中加密信息后得到的原信息。样例输入
QWERTYUIOPLKJHGFDSAZXCVBN
ABCDEFGHIJKLMNOPQRSTUVWXY
MSRTZCJKPFLQYVAWBINXUEDGHOOILSMIJFRCOPPQCEUNYDUMPP
YIZSDWAHLNOVFUCERKJXQMGTBPPKOIYKANZWPLLVWMQJFGQYLL
提示输入输出样例1说明:原信息中的字母&A&和&B&对应相同的密字,输出&Failed&。输入输出样例2说明:字母&Z&在原信息中没有出现,输出&Failed&。来源
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char mi[501],ming[501],p[501],f[501];
6 int a[101]={0};//对应ascll码
7 int main(){
scanf("%s%s%s",mi,ming,p);
int len=strlen(mi);
for(int i=0;i&i++){
if(a[int(mi[i])]){//有重复
if(f[int(mi[i])]!=ming[i]){printf("Failed\n");return 0;}
a[int(mi[i])]++;
f[int(mi[i])]=ming[i];
for(int i=65;i&=90;i++)
for(int j=65;j&=90;j++)
if(f[i]==f[j]&&i!=j){printf("Failed\n");return 0;}
for(int i=65;i&=90;i++)//不全
if(!a[i]){printf("Failed\n");return 0;}
int zp=strlen(p);
for(int i=0;i&i++)
p[i]=f[int(p[i])];
12:加密的病历单
总时间限制:&1000ms&内存限制:&65536kB描述
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。&在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。&经过研究,小英发现了如下加密规律(括号中是一个&原文 -& 密文&的例子)&1.&&原文中所有的字符都在字母表中被循环左移了三个位置(dec&&-& abz)&2.&&逆序存储(abcd -& dcba )&3.&&大小写反转(abXY -& ABxy)&
输入一个加密的字符串。(长度小于50且只包含大小写字母)输出输出解密后的字符串。样例输入
GSOOWFASOq
Trvdizrrvj
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char mi[1001];
6 int main(){
int len=strlen(mi);
for(int i=0;i&i++) mi[i]+=3;
for(int i=0;i&i++){
if(mi[i]&90&&mi[i]&97) mi[i]-=26;
if(mi[i]&122) mi[i]-=26;
if(mi[i]&=65&&mi[i]&=90) mi[i]+=32;
else mi[i]-=32;
for(int i=len-1;i&=0;i--) cout&&mi[i];
13:将字符串中的小写字母转换成大写字母
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个字符串,将其中所有的小写字母转换成大写字母。
输入输入一行,包含一个字符串(长度不超过100,可能包含空格)。输出输出转换后的字符串。样例输入
helloworld123Ha
HELLOWORLD123HA
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 #include&algorithm&
5 using namespace
6 #define N 521
7 char a[N],c[N];
8 int main(){
//freopen("sh.txt","r",stdin);
int l=strlen(a);
for(int i=0;i&l;i++)
if(a[i]&=‘a‘&&a[i]&=‘z‘) a[i]-=32;
14:大小写字母互换
总时间限制:&1000ms&内存限制:&65536kB描述
把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。
输入输入一行:待互换的字符串。输出输出一行:完成互换的字符串(字符串长度小于80)。样例输入
If so, you already have a Google Account. You can sign in on the right.
iF SO, YOU ALREADY HAVE A gOOGLE aCCOUNT. yOU CAN SIGN IN ON THE RIGHT.
1 #include&cstdio&
2 #include&cstring&
3 using namespace
4 char s[9999];
5 int main()
int len=strlen(s);
for(int i=0;i&i++){
if(s[i]&=65&&s[i]&=90) s[i]+=32;
else if(s[i]&=97&&s[i]&=122)s[i]-=32;
15:整理药名
总时间限制:&1000ms&内存限制:&65536kB描述
医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。
输入第一行一个数字n,表示有n个药品名要整理,n不超过100。接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和-组成。输出n行,每行一个单词,对应输入的药品名的规范写法。样例输入
2-PENICILLIN
Cefradine-6
2-penicillin
Cefradine-6
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char s[25];int
6 int main(){
scanf("%d",&n);
while(n--){
memset(s,NULL,sizeof(s));
scanf("%s",s);
if(s[0]&=‘a‘&&s[0]&=‘z‘) s[0]-=32;
for(int i=1;i&strlen(s);i++)
if(s[i]&=‘A‘&&s[i]&=‘Z‘) s[i]+=32;
printf("%s\n",s);
16:忽略大小写的字符串比较
总时间限制:&1000ms&内存限制:&65536kB描述
一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0‘为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准(注意:如果某个字符串遇到‘\0‘而另一个字符串还未遇到‘\0‘,则前者小于后者)。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入输入为两行,每行一个字符串,共两个字符串。(每个字符串长度都小于80)输出如果第一个字符串比第二个字符串小,输出一个字符"&";如果第一个字符串比第二个字符串大,输出一个字符"&";如果两个字符串相等,输出一个字符"="。样例输入
Hello, how are you?
hello, How are you?
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 #include&algorithm&
5 #include&cstdlib&
6 using namespace
7 #define N 510
8 char s1[N],s2[N];
9 int main(){
int l1=strlen(s1);
int l2=strlen(s2);
for(int i=0;i&l1;i++)
if(s1[i]&=‘A‘&&s1[i]&=‘Z‘) s1[i]+=32;
for(int i=0;i&l2;i++)
if(s2[i]&=‘A‘&&s2[i]&=‘Z‘) s2[i]+=32;
if(!strcmp(s1,s2)) cout&&‘=‘&&
else if(strcmp(s1,s2)&0) cout&&‘&‘&&
else if(strcmp(s1,s2)&0) cout&&‘&‘&&
17:字符串判等
总时间限制:&1000ms&内存限制:&65536kB描述
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入两行,每行包含一个字符串。输出若两个字符串相等,输出YES,否则输出NO。样例输入
a A bb BB ccc CCC
Aa BBbb CCCccc
1 #include&iostream&
2 #include&cstdio&
3 #include&cstring&
4 #include&cstdlib&
5 using namespace
6 char s1[9999],s2[9999];
7 int z1=0,z2=0;
8 int main()
//freopen("sh.in","r",stdin);
char ch=getchar();
while(ch!=10) {if(ch!=32) s1[z1++]=ch=getchar();}
{if(ch!=32&&ch!=10) s2[z2++]=ch=getchar();}
while(ch!=10);
if(z1!=z2) {printf("NO\n");return 0;}
else for(int i=1;i&=z1;i++){
if(abs(s1[i]-s2[i])==0||abs(s1[i]-s2[i])==32);
else {f=0;break;}
printf("%s\n",f?"YES":"NO");
18:验证子串
总时间限制:&1000ms&内存限制:&65536kB描述
输入两个字符串,验证其中一个串是否为另一个串的子串。
输入输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。输出若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)&否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)&否则,输出 No substring。样例输入
abc is substring of dddncabca
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 using namespace
5 string s1,s2;
6 int main(){
//freopen("sh.txt","r",stdin);
ios::sync_with_stdio(false);
cin&&s1&&s2;
int l1=s2.find(s1);
int l2=s1.find(s2);
if(l1&=0||s1==s2){cout&&s1&&" is substring of "&&s2;return 0;}
else if(l2&=0){cout&&s2&&" is substring of "&&s1;return 0;}
else cout&&"No substring";
19:字符串移位包含问题
总时间限制:&1000ms&内存限制:&65536kB描述
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
输入一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。输出如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。样例输入
AABCD CDAA
1 #include&cstdio&
2 #include&cstring&
3 using namespace
4 char s1[1001],s2[1001],n[1001];
5 int prime(char *s1,char *s2)
int len=strlen(s1);
for(int i=0;i&i++){
char tmp=s1[0];
for(int j=0;j&len-1;j++)
s1[j]=s1[j+1];
s1[len-1]=
if(strstr(s1,s2)!=NULL)
18 void jh(){
strcpy(n,s1);
strcpy(s1,s2);
strcpy(s2,n);
23 int main()
scanf("%s%s",s1,s2);
int len1=strlen(s1),len2=strlen(s2);
if(len1&len2)jh();
if(prime(s1,s2))
printf("true\n");
printf("false\n");
20:删除单词后缀
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。
输入输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。输出输出按照题目要求处理后的单词。样例输入
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 using namespace
5 char s[261];
6 int main(){
ios::sync_with_stdio(false);
gets(s+1);
int len=strlen(s+1);
if((s[len-1]==‘e‘&&s[len]==‘r‘)||(s[len-1]==‘l‘&&s[len]==‘y‘)) len=len-2;
else if(s[len-2]==‘i‘&&s[len-1]==‘n‘&&s[len]==‘g‘) len-=3;
for(int i=1;i&=i++)
cout&&s[i];
21:单词替换
总时间限制:&1000ms&内存限制:&65536kB描述
输入一个字符串,以回车结束(字符串长度&=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入输入包括3行,第1行是包含多个单词的字符串第2行是待替换的单词a(长度 &= 100);第3行是a将被替换的单词b(长度 &= 100).s, a, b 最前面和最后面都没有空格.输出输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入
You want someone to help you
I want someone to help you
1 #include&iostream&
2 #include&cstdio&
3 #include&cstring&
4 using namespace
5 string s,a,b;
6 int main()
while(getline(cin,s)){
getline(cin,a);
getline(cin,b);
for(int i=0;i&s.length();i++)
if(s.length()-i&=a.length()){
if(s.substr(i,a.length())==a&&(i==0||s[i-1]==‘ ‘)&&(i==s.length()-a.length()||s[i+a.length()]==‘ ‘))
s.replace(i,a.length(),b);
}else break;
22:紧急措施
总时间限制:&1000ms&内存限制:&65536kB描述
近日,一些热门网站遭受黑客入侵,这些网站的账号、密码及email的数据惨遭泄露。你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的email。你此时拿到了那份泄露的数据,希望尽快将自己的密码更改。策略如下:根据email找到你的用户名和密码,然后更改密码。更改的规则为:小写和大写交换,非字母字符保持不变。
输入第一行为你的email地址,长度不超过50个字符且只包含字母、数字和&@&符号。第二行为账号数N,N(0 & N & 10000)。接下来N行,每行表示一个账号,格式为:用户名 密码 email它们之间用单个空格分开。用户名、密码、email均不含空格,且长度不超过50个字符。输出有若干行,每行为你的一个账号,包括:你的账号,修改后的密码(之间用单个空格分隔)。如果没有你的账号,则输出empty。样例输入
样例输入1:
abc@pku.edu.cn
helloKitty iLoveCats abc@pku.edu.cn
2012 maya2012
KittyCat 5iKitty abc@pku.edu.cn
program password
whoAmi Feb.29$ abc@pku.edu.cn
样例输入2:
abc@pku.edu.cn
2012 maya2012
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 string yh,mm,
6 string s1;
7 int n,flag=0;
8 int main()
ios::sync_with_stdio(false);
cin&&s1&&n;
for(int i=0;i&n;i++){
cin&&yh&&mm&&
if(s1==yx){
int len=mm.length();
for(int i=0;i&i++){
if(mm[i]&=‘A‘&&mm[i]&=‘Z‘) {mm[i]+=32;continue;}
if(mm[i]&=‘a‘&&mm[i]&=‘z‘)
mm[i]-=32;
cout&&yh&&‘ ‘;
cout&&mm&&
if(!flag) cout&&"empty\n";
23:过滤多余的空格
总时间限制:&1000ms&内存限制:&65536kB描述
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入一行,一个字符串(长度不超过200),句子的头和尾都没有空格。输出过滤之后的句子。样例输入
world.This is
c language.
Hello world.This is c language.
#include&cstdio&
#include&iostream&
#include&cstring&
#include&algorithm&
using namespace
#define N 521
char a[N][N],ct[N];
int main(){
//freopen("sh.txt","r",stdin);
while(~scanf("%s",ct)){
int len=strlen(ct);
for(int i=0;i&i++)
a[x][i]=ct[i];
for(int j=0;j&x;j++)
cout&&a[j]&&‘ ‘;
24:单词的长度
总时间限制:&1000ms&内存限制:&65536kB描述
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。&注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
输入一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。输出依次输出对应单词的长度,之间以逗号间隔。样例输入
She was born in
from Beijing city.
3,3,4,2,10,3,4,7,5
1 #include&stdio.h&
2 char a[10010];
3 int main()
int i,sum=0;
for(i = 0;i &= 10010;i++){
if(a[i]!=‘ ‘&&a[i]!=‘\0‘){
sum=sum++;}
if(a[i]==‘\0‘){
printf("%d",sum);
return 0;}
if(sum!=0){
printf("%d,",sum);
25:最长最短单词
总时间限制:&1000ms&内存限制:&65536kB描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。&
输入一行句子。输出两行输出:第1行,第一个最长的单词。第2行,第一个最短的单词。样例输入
I am studying Programming language C in Peking University
Programming
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 using namespace
5 #define N 510
6 char c[N][51];
7 char ct[N];
8 int z[N],x=0;
9 int mi=0x7f,ma,miz,
10 int main(){
//freopen("sh.txt","r",stdin);
while(~scanf("%s",ct)){
int len=strlen(ct);z[x]=
for(int i=0;i&i++)
c[x][i]=ct[i];
for(int q=0;q&x;q++){
if(z[q]&mi){
if(z[q]&ma){
cout&&c[maz]&&
cout&&c[miz]&&
26:字符串最大跨距
总时间限制:&1000ms&内存限制:&65536kB描述
有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。&例如,S = "abcd123ab888efghij45ef67kl", S1="ab", S2="ef",其中,S1在S中出现了2次,S2也在S中出现了2次,最大跨距为:18。
输入三个串:S1, S2, S3,其间以逗号间隔(注意,S1, S2, S3中均不含逗号和空格);输出S1和S2在S最大跨距;若在S中没有满足条件的S1和S2,则输出-1。样例输入
abcd123ab888efghij45ef67kl,ab,ef
1 #include&cstring&
2 #include&cstdio&
3 #include&iostream&
4 using namespace
5 #define N 1010
6 char a[N],s[N],s1[N],s2[N],*l,*r;
7 int lenn,L,R;
8 void read(){
int zj=0,f1,f2;
for(int i=0;i&i++){
if(a[i]!=‘,‘) s[zj++]=a[i];
else {f1=i+1;zj=0;break;}
for(int i=f1;i&i++){
if(a[i]!=‘,‘) s1[zj++]=a[i];
else {f2=i+1;zj=0;break;}
for(int i=f2;i&i++)
s2[zj++]=a[i];
21 void fz(char *a,int len){
int i,j=len-1;
for(i=0;i&i++,j--){
char t=a[i];
a[i]=a[j];
30 int main(){
scanf("%s",a);
lenn=strlen(a);
read();//分割
int len=strlen(s);
int len1=strlen(s1);
int len2=strlen(s2);
l=strstr(s,s1);
L=l-s+len1-1;
fz(s,len);//翻转
fz(s2,len2);
r=strstr(s,s2);
R=r-s+len2-1;
R=len-R-1;//还原
if(L&R) printf("-1\n");
else printf("%d\n",R-L-1);
28:单词倒排
总时间限制:&1000ms&内存限制:&65536kB描述
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
输入输入为一个字符串(字符串长度至多为100)。输出输出为按要求排序后的字符串。样例输入
I am a student
student a am I
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 using namespace
5 char c[101][101];
6 char ct[101];
7 int x=0;
8 int main(){
//freopen("sh.txt","r",stdin);
while(~scanf("%s",ct)){
int len=strlen(ct);
for(int i=0;i&i++)
c[x][i]=ct[i];
for(int q=x-1;q&=0;q--){
for(int p=0;c[q][p]!=‘\0‘;p++)
cout&&c[q][p];
cout&&‘ ‘;
29:ISBN号码
总时间限制:&1000ms&内存限制:&65536kB描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如&x-xxx-xxxxx-x&,其中符号&-&是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符&-&之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2&&以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对这9个数字,从左至右,分别乘以1,2,&,9,再求和,即0&1+6&2+&&+2&9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出&Right&;如果错误,则输出你认为是正确的ISBN号码。
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。输出共一行,假如输入的ISBN号码的识别码正确,那么输出&Right&,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符&-&)。样例输入
0-670-82162-4
0-670-82162-0
0-670-82162-4
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char s[31];
6 int a[31],ans=0;
7 int main()
memset(a,-1,sizeof(a));
scanf("%s",s);
for(int i=0;i&13;i++){
if(s[i]==‘X‘) a[i]=10;
else if(s[i]&=‘0‘&&s[i]&=‘9‘) a[i]=s[i]-‘0‘;
for(int i=0;i&12;i++)
if(a[i]!=-1) ans+=a[i]*zj,zj++;
int w=ans%11;
if(a[12]==w) {printf("Right\n");return 0;}
for(int i=0;i&12;i++) cout&&s[i];
if(w==10) cout&&‘X‘&&
else cout&&w&&
总时间限制:&1000ms&内存限制:&65536kB描述
有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串&ABCEFAGADEGKABUVKLM&的首尾连在一起,构成一个环;字符串&MADJKLUVKL&的首尾连在一起,构成一个另一个环;&UVKLMA&是这两个环的一个连续公共字符串。
输入一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。输出输出一个整数,表示这两个字符环上最长公共字符串的长度。样例输入
ABCEFAGADEGKABUVKLM MADJKLUVKL
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 string a,b;
6 int ans=0,tmp=0,x;
7 int main()
cin&&a&&b;
int lena=a.length();
int lenb=b.length();
x=min(lena,lenb);
for(int i=0;i&i++)
for(int j=0;j&j++){
while(a[i+tmp]==b[j+tmp]&&tmp&=x)
ans=max(ans,tmp);
ans=min(ans,lena);
ans=min(ans,lenb);
printf("%d\n",ans);
31:字符串p型编码
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个完全由数字字符(‘0‘,‘1‘,‘2‘,&,‘9‘)构成的字符串str,请写出str的p型编码串。例如:字符串可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说的p型编码串为;类似的道理,编码串101可以用来描述;可描述为"11个0",因此它的p型编码串即为110;可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串为。
输入输入仅一行,包含字符串str。每一行字符串最多包含1000个数字字符。输出输出该字符串对应的p型编码串。样例输入
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char a[10010];
6 int main()
scanf("%s",a);
int lena=strlen(a);
char ch=a[0];
for(int i=1;i&=i++){
if(ch!=a[i]){
32:行程长度编码
总时间限制:&1000ms&内存限制:&65536kB描述
在数据压缩中,一个常用的途径是行程长度压缩。对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。 例如,如果待压缩串为"AAABBBBCBB",则压缩的结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低。
现要求根据输入的字符串,得到大小写不敏感压缩后的结果(即所有小写字母均视为相应的大写字母)。
输入一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。输出输出为一行,表示压缩结果,形式为:(A,3)(B,4)(C,1)(B,2)即每对括号内部分别为字符(都为大写)及重复出现的次数,不含任何空格。样例输入
aAABBbBCCCaaaaa
(A,3)(B,4)(C,3)(A,5)
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char a[10010];
6 int main()
scanf("%s",a);
int lena=strlen(a);
for(int i=0;i&i++)
if(a[i]&=‘a‘&&a[i]&=‘z‘) a[i]-=32;
char ch=a[0];
for(int i=1;i&=i++){
if(ch!=a[i]){
printf("(%c,%d)",ch,x);
33:判断字符串是否为回文
总时间限制:&1000ms&内存限制:&65536kB描述
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。输出如果字符串是回文,输出yes;否则,输出no。样例输入
1 #include&cstdio&
2 #include&cstring&
3 #include&iostream&
4 using namespace
5 char a[1010],b[1010];
6 int main()
scanf("%s",a);
int len=strlen(a);
for(int i=0;i&i++)
b[i]=a[len-1-i];
printf("%s\n",strcmp(a,b)==0?"yes":"no");
34:回文子串
总时间限制:&1000ms&内存限制:&65536kB描述
给定一个字符串,输出所有长度至少为2的回文子串。
回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。
输入一个字符串,由字母或数字组成。长度500以内。输出输出所有的回文子串,每个子串一行。子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。样例输入
1 #include&cstdio&
2 #include&iostream&
3 #include&cstring&
4 #include&algorithm&
5 using namespace
6 #define N 521
7 char a[N],c[N];int l,m;
8 bool prime(char *a){
int l=strlen(a);
int j=l-1,i=0;
while(j&=l/2){
if(a[i]!=a[j]) return 0;
17 int main(){
//freopen("sh.txt","r",stdin);
l=strlen(a);
for(int i=2;i&=l;i++)
for(int j=0;j&l;j++){
if(i+j&l) break;
memset(c,NULL,sizeof(c));
for(int k=j;k-j&i;k++)
c[++m]=a[k];
if(prime(c)) puts(c);
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/shenben/p/5468976.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!}

我要回帖

更多关于 苹果空格句号怎么取消 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信