字符串算法(六) - 回文串

1.125. 验证回文串

/*
1.给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
2.说明:本题中,我们将空字符串定义为有效的回文串。 */
class Solution {
    
    
    public boolean isPalindrome(String s) {
    
    
        if(s == null) {
    
    
            return true;
        }
        s = s.toLowerCase();
        for(int i=0,j=s.length()-1;i<=j;i++,j--){
    
    
        if(s.charAt(i)<='z'&&s.charAt(i)>='a' || s.charAt(i)<='9'&&s.charAt(i)>='0'){
    
    
            if(s.charAt(j)<='z'&&s.charAt(j)>='a' || s.charAt(j)<='9'&&s.charAt(j)>='0'){
    
    
                if(s.charAt(i)!=s.charAt(j)){
    
    
                    return false;
                }
            }else{
    
    
                i--;
            }
        }else{
    
    
            j++;
        }
    }
    return true;
    }
}

2.剑指 Offer II 018. 有效的回文

/*
1.给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
2.本题中,将空字符串定义为有效的 回文串 。 */
class Solution {
    
    
    public boolean isPalindrome(String s) {
    
    
        s=s.toLowerCase();
        int l=0,r=s.length()-1;
        while(l<r) {
    
    
            while(l<r&&!check(s.charAt(l))) l++;
            while(l<r&&!check(s.charAt(r))) r--;
            if(l<r&&s.charAt(l)!=s.charAt(r)) return false;
            l++;
            r--;
        }
        return true;
 
    }
    private boolean check(char c) {
    
    
        return (c>='a'&&c<='z') ||(c>='0'&&c<='9');
    }
}

3.面试题 01.04. 回文排列

/*
1.给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
2.回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
3.回文串不一定是字典当中的单词。 */
class Solution {
    
    
    public boolean canPermutePalindrome(String s) {
    
    
        HashMap<Character, Integer> str = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
    
    
            str.put(s.charAt(i), str.getOrDefault(s.charAt(i), 0) + 1);
        }
        int n = 0;
        for (int values : str.values()) {
    
    
            if (values % 2 == 1) {
    
    
                if (++n > 1)
                    return false;
            }
        }
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_52230126/article/details/121596815
今日推荐