void MakeItPOLI(char Input[99])
{
char poli[99]="", ch[2],chV2[2]; // chV2- will be the middle letter(if there is odd number of letters)
int arr[26]={0},i,j,flag=0; // flag=1 if there is need for middle letter.
ch[1]='\0'; chV2[1]='\0';
for(i=0;i<99;i++) arr[Input[i] - 'a']++;
for(i=0; i<26;i++)
{
if(arr[i]%2!=0){arr[i]-=1;chV2[0]=i+'a'; flag=1;}
for(j=0;j<arr[i]/2;j++){ch[0]=i+'a'; strcat(poli,ch);}
}
strrevV2(poli,chV2, flag);
}
void strrevV2(char poli[99], char chV2[2], int flag){
int e=strlen(poli),s=0; char revpoli[99]="",temppoli[99]="";
strcpy(temppoli,poli);
while (e!=0) revpoli[s++]=temppoli[--e];
if(flag==1) strcat(poli,chV2); strcat(poli,revpoli);
printf("This is not a palindrom but it could be\n---> %s\n",poli);
}
编辑 -
感谢您的帮助。这是一个来自大学C班(我是一名学生)的作业,代码应该采取一个字符串并重新安排到回文。没有添加字母,正如这里的一些评论所做的那样,[测试永远不会是回文,但zccbbaa应该是abczcba]但是他们帮助我学习,所以谢谢!
我没有时间完全解释q。另一天。这是一个大而烦人的任务的一小部分。 [500行代码,有些确实接近1000行,最少看见约500行]。上面是我的代码,我有同样的想法,但工作! (还有另外一些代码确保&#34;输入[99]&#34;)可以是回文 - 如果它最多只有一个字母,则出现奇数次