最长回文子串(暴力破解)
题目描述
给定一个字符串 s
,找到 s
中最长的回文子串。
解题思路
此解题方法为暴力破解,通过找到一个字符,然后分别向两边扩展,直到找到最长的回文子串。
char * longestPalindrome(char * s){ int length=strlen(s); //字符串长度 int start=0,len=0;//记录初始位置和子串长度 /** 长度为奇数时 */ for(int i=0;i<length;++i){ int left=i-1,right=i+1; while(left>=0 && right<length && s[left]==s[right]){ left--;right++; } if(right-left-1>len){ start=left+1; len=right-left-1; } } /** 长度为偶数时 */ for(int i=0;i<length;++i){ int left=i,right=i+1; while(left>=0 && right<length && s[left]==s[right]){ left--;right++; } if(right-left-1>len){ start=left+1; len=right-left-1; } } s[start+len]='\0'; // return s+start; }
////才发现一个关于字符串的问题,如果一个长度为10的字符串str,例如:“0123456789”,如果将s[5]='\0',再返回s+2,那么这个返回的字符串就会变成“234”
谁人畏惧现实,谁人将从梦中消失