码迷,mamicode.com
首页 > 其他好文 > 详细

最长回文字符串

时间:2020-05-16 19:12:48      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:i++   res   算法   ret   isp   out   bool   最大   示例   

题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

解析:最长回文字符串就是正过来和反过来一样的字符串,比如上海自来水来自海上,小明到操场操到天明。。

方法一:从最暴力的方法入手,直接遍历所有的子字符串

 1 class Solution {
 2 public:
 3     string longestPalindrome(string s) {
 4         //暴力解法
 5         int length = s.length();
 6         int max = 0;
 7         string res = "";
 8         for(int i = 0; i < length; i++){
 9             for(int j = i + 1; j <= length; j++){
10                 string tmp = string(s, i, j - i);
11                 //cout << tmp << endl;
12                 if(isPalindrome(tmp) && tmp.length() > max){
13                     //cout << tmp << endl;
14                     max = tmp.length();
15                     res = tmp;
16                 }
17             }
18         }
19         return res;
20         
21     }
22 
23     bool isPalindrome(string s){
24         for(int i = 0; i < s.length() / 2; i++){
25             if(s[i] != s[s.length() - i - 1]){
26                 return false;
27             }
28         }
29         return true;
30     }
31 };

分析:遍历子字符串需要n(n - 1)/2,复杂度为O(n^2),每次判断是否为回文字符串的复杂度为O(n),所以,此算法复杂度为O(n^3);

 

最长回文字符串

标签:i++   res   算法   ret   isp   out   bool   最大   示例   

原文地址:https://www.cnblogs.com/zz1314/p/12901450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!