1.暴力法
#include "回文數.hpp"
#include #include #include using namespace std;
class solution
//左邊++,右邊--
left++;
right--;
}return true;
}public:
string longestpalindrome(string s)
//定義
int maxlen =1;
//獲得字串s中 從第0位開始的長度為1的字串
string res = s.substr(0, 1);
//遍歷
for(int i=0;imaxlen && valid(s,i,j))}}
return res;
}};
時間複雜度:o(n3)
空間複雜度:o(1)
2.中心擴散法
#include #include #include using namespace std;
class solution else
}// 這裡要小心,跳出 while 迴圈時,恰好滿足 s.charat(i) != s.charat(j),因此不能取 i,不能取 j
return s.substr(i + 1, j - i - 1);
}public:
string longestpalindrome(string s)
int maxlen = 1;
string res = s.substr(0, 1);
// 中心位置列舉到 len - 2 即可
for (int i = 0; i < size - 1; i++)
}return res;
}};
力扣 最長回文子串
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。我的第一想法是暴力,然後才是中心擴充套件法 雖然知道應該用動態規劃,但是實現不出來 public string longestpalindr...
最長回文子串 力扣
5種解法 1.最長公共子串 2.暴力法 3.動態規劃 4.中心擴充套件法 5.manacher法 以下記錄大佬題解 演算法 什麼叫回文串?如果乙個字串正著讀和反著讀是一樣的,那它就是回文串。中心擴充套件演算法 我們觀察到回文中心的兩側互為映象。因此,回文可以從它的中心展開,並且只有 2n 1 個這樣...
力扣 最長回文子串 C
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。輸入 cbbd 輸出 bb include using namespace std define max a,b a b a b define min...