首页 > 代码库 > 找出字符串中的最长的回文子串
找出字符串中的最长的回文子串
1 class Solution { 2 public: 3 string longestPalindrome(string s) { 4 int maxLoc=0; 5 int maxNum=1; 6 const int stringSize=s.size(); 7 if(stringSize==1){ 8 return s; 9 } 10 11 for(int i=1; i!= 2*stringSize-1-1;++i){ 12 int a, b; 13 int num=1; 14 if(i%2==0){ //even 15 a=(int)(i-1)/2; 16 b=(int)(i+1)/2+1; 17 num=1; 18 } 19 else{ //old 20 a=(int)(i-1)/2; 21 b=(int)(i+1)/2; 22 num=0; 23 } 24 25 while(a>=0 && b<=stringSize){ 26 if(s[a] == s[b]){ 27 num=num+2; 28 a--; 29 b++; 30 } 31 else{ 32 break; 33 } 34 } 35 if(num>maxNum){ 36 maxNum=num; 37 maxLoc=i; 38 } 39 } 40 41 if(maxLoc%2==0){ 42 return s.substr(maxLoc/2-(maxNum-1)/2, maxNum); 43 } 44 else{ 45 return s.substr(maxLoc/2+1-maxNum/2, maxNum); 46 } 47 } 48 };
找出字符串中的最长的回文子串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。