一个字符串经过对称扩展之后就是一个回文串,如果继续对称扩展下去就会形成一个很长的字符串,例如:“AC”对称扩展一次变成“ACCA” ,再进行对称扩展一次就变成了“ACCAACCA”,现在给你一个字符串,请你判断这个字符串可能的最短原串是什么?
输入格式:
多实例,每个实例输入一行字符串,长度不大于1000。
输出格式:
对应每个实例输出一行字符串,为输入字符串的最短原串。
输入样例:
在这里给出一组输入。例如:
ACMMCA
输出样例:
在这里给出相应的输出。例如:
ACM
用C语言怎么写
一个字符串经过对称扩展之后就是一个回文串,如果继续对称扩展下去就会形成一个很长的字符串,例如:“AC”对称扩展一次变成“ACCA” ,再进行对称扩展一次就变成了“ACCAACCA”,现在给你一个字符串,请你判断这个字符串可能的最短原串是什么?
输入格式:
多实例,每个实例输入一行字符串,长度不大于1000。
输出格式:
对应每个实例输出一行字符串,为输入字符串的最短原串。
输入样例:
在这里给出一组输入。例如:
ACMMCA
输出样例:
在这里给出相应的输出。例如:
ACM
用C语言怎么写
#include <stdio.h>
#include <string.h>
int ishw(char *s)
{
int n = strlen(s);
for (int i = 0; i < n / 2; i++)
{
if (s[i] != s[n - i - 1])
return 0;
}
return 1;
}
int main()
{
char s[1000];
gets(s);
while (ishw(s) && strlen(s) > 1)
{
int n = strlen(s);
if (n % 2 == 0)
s[n / 2] = '\0';
else
break;
}
printf("%s", s);
return 0;
}