给字符串s,找出s中最长的回文子串。 (检查问题来源() ) )。
示例1 :
输入: s='babad '
输出:“bab”
解释:“aba”也是符合题意的回答。
回文的意思是比如:上海自来水来自海上
# define _ CRT _ secure _ no _ warnings # include stdio.h # include string.h # include stdlib.h//最长回文子串intjudgeged right----; }else {*in=0; 返回1; //如果不能配置回文,则直接返回1; } }返回时间; //如果循环结束后可以构成回文,则返回相应的长度(char * longest palindrome char * s ) ) /用于传递判断回文的函数的int left_1=0; int right_1=0; //用于存储数组的长度int right=0; //中继变量int temp=0; int temp_1=1; int temp_2=0; int temp_in=0; if(s==null ) {return 0; }while(s[right]!=' ' () /循环计算字符数组长度right; }for(intI=0; i right - 1; I () /双循环判断两个相等字符之间是否构成回文,最长的值for(intj=I1; j right; j () if ) s[I]==s[j]j-I1temp_in ) ) /如果找到相等的两个字符(//() ) (如果它可以构成回文) )其长度作为上一次语句是成功的长度哦//头加1right_1=j - 1; //尾减1temp_in=j - i 1; //保存回文长度temp=judgedrome(s,left_1,right_1,temp_in ); //将回文的长度按地址传递给函数,回文的情况下不改变值,不是回文的情况下将值设为0if(temptemp_1)//存储最大长度temp_1=temp; temp_2=i; //用于记录回文子串的开始位置,然后为新空格赋值}}}}char* ptr=(char* ) malloc(sizeof(char ) ) temp_1) ); //申请用于保存最长回文子串for的新空间(intI=0; i temp_1; I ) ) /赋值回文子串ptr[i]=s[temp_2]; temp_2; }ptr[temp_1]=' '; //末尾有' 'return ptr; //返回此回文子串(}int main ) () charstr ) )='abcbadgteq ); int sum=0; char* ptr=0; ptr=长脉冲串(str; int i=0; wile(ptr[I]!=' ' () /打印判断是否正确printf(%c )、ptr[i] ); I; (自由) ptr; //释放动态申请空间return 0; }