关于回文串,有很多问题。这一篇是关于回文串的基本操作和回文子串问题。
题目 | 简介 |
---|---|
125. Valid Palindrome | 验证回文串 |
680. Valid Palindrome II | 能否(允许删一个字母)得到回文串 |
647. Palindromic Substrings | 求回文子串个数 |
5. Longest Palindromic Substring | 求最长的回文子串(连续) |
516. Longest Palindromic Subsequence | 求最长的回文子串(可间隔) fuzzy string match(不在本文写啦) |
214. Shortest Palindrome | 补最短形成回文串–KMP问题 (不在本文写啦) |
125. Valid Palindrome
Input: “A man, a plan, a canal: Panama”,Output: true
简单的验证回文串的操作。两边往中间挪指针。
class Solution {
public boolean isPalindrome(String s) {
s = s.toLowerCase();
int left = 0, right = s.length() - 1;
while (left < right) {
while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
left++;
}
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
right--;
}
if (s.charAt(left) != s.charAt(right)) {