#include<stdio.h>
#include<string.h>
int path[100];//切割方案
int top=0;
int judge(char string[],int size);
void start(int startIndex,char string[]);
int main(){
char input[100]; // 定义一个字符数组用于存储输入的字符串
printf("请输入一串数字: ");
fgets(input, sizeof(input), stdin); // 获取输入的字符串
// 去掉换行符(fgets函数会读取换行符)
input[strcspn(input, "\n")] = '\0';
start(0,input);
return 0;
}
int judge(char string[],int size)
{//判断回文串
int left=0,right=size-1;
while(right>=left){
if(string[left]!=string[right]){
return 0;
}
right--;
left++;
}
return 1;
}
void start(int startIndex,char string[]){
int size=strlen(string);
if(startIndex==size){
int i;
for(i=0;i<top;i++){
printf("%d",path[i]);
}
printf("\n");
return;
}
int i;
for(i=startIndex+1;i<=strlen(string);i++){
int j;
char temp[100],ttop=0;
for(j=startIndex;j<i;j++){
temp[ttop++]=string[j];
}
temp[ttop]='\0';
if(judge(temp,strlen(temp))){
path[top++]=i;
start(i,string);
top--;
}else{
continue;
}
}
}
代码随想录听课笔记——回文子串
最新推荐文章于 2024-10-02 22:45:05 发布