給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例 1:
輸入: 「babad」
輸出: 「bab」
注意: 「aba」 也是乙個有效答案。
示例 2:
輸入: 「cbbd」
輸出: 「bb」
從中心向兩端尋找,最終得到最大的字串
)/*找單數最大,如為回文,則長度為 2 * itmp + 1 */
itmp = solution::
findmaxstring
(s, inum -
1, inum +1)
;if( itmp &&0!=
(ilennum =
(itmp + itmp +1)
)&&
ilennum > imaxlen)
}return s.
substr
(ileft,imaxlen);}
};執行結果
實際效果並不是很優秀。
動態規劃思想
class
solution
while
(nextpos < len)
nextpos = right +1;
while
(left >
0&& right < len -
1&& s[left -1]
== s[right +1]
)if(right - left +
1> maxlength)
}return s.
substr
(startpos, maxlength);}
};
耗時和記憶體消耗很優秀啊,帶來的效果確實極大的,還要努力啊!
供測試驗證使用
int
main
(const
int argc,
const
char
* ar**)
string s = ar**[1]
; std::cout << solution.
longestpalindrome
(s)<< std::endl;
return0;
}
力扣題庫五 最長回文子串
題目 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 中心擴充套件法 class solution 可以用馬拉車演算法的思想來理解 a b b a 這...
最長回文子串 力扣5
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 利用回文字串的特點 正著讀和反著讀都是一樣的,所以首先把s反轉,利用i和j控制左右邊界,不斷從s中擷取...
力扣 5 最長回文子串
題目 和647類似 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 題解 方法一 面試題,要求最長只能一趟迴圈 中心擴散法 class solutio...