首页 > 代码库 > 少年 DXH
少年 DXH
少年 DXH
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描写叙述
- 大家都知道,DXH 幼时性格怪癖,小朋友都不喜欢和他玩,这样的情况一直到 DXH 的少年时期也没有改变。
少年时期的 DXH 迷上了"回文串",“回文串”是指正着读倒着读都一样的字符串。DXH一个人的时候喜欢在地上随便写一个字符串 S,然后在这个字符串的右边加入尽量少的字符(能够不加入,就是 0 个),使得这个字符串变成“回文串”。但玩的时间长了,DXH 的手也酸了,聪明的你能帮他写一个程序,算出这个加入最少字符形成的回文串吗?
一个字符串 S[1..L]被称为回文串,当且仅当 S[i] = S[L - i + 1] (1 <= i <= L)。- 输入
- 第一行,一个 T (T <= 100),表示有 T 个字符串须要你推断
之后 T 行,每行一个字符串 S。
S 的长度|S|满足 1 <= |S| <= 50,且 S 仅仅由小写字母‘a‘ -‘z‘组成。 - 输出
- 对于每一个字符串,输出一行,每行一个字符串 S‘, 是在 S 右側加入最少的字符形成的回文串。
- 例子输入
-
5 add cigartragic dxhisgirl acaba abczyxyz
- 例子输出
-
adda cigartragic dxhisgirlrigsihxd acabaca abczyxyzcba
-
代码:
-
#include<stdio.h> #include<string.h> int main() { int T,len,a,b,min,max,k,i; char str[60]; scanf("%d",&T); while(T--) { k=0; scanf("%s",str); len=strlen(str); for(i=0;i<len;i++) { if(str[i]==str[len-1]) { a=min=i; b=max=len-1; for(;max>=min;max--,min++) { if(str[max]==str[min]) k=1; else { k=2; break; } } } if(k==1) break; } for(i=0;i<len-1;i++) printf("%c",str[i]); for(i=a;i>=0;i--) printf("%c",str[i]); printf("\n"); } return 0; }
少年 DXH
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。