• LeetCode 680. Valid Palindrome II 验证回文字符串 Ⅱ(C++/Java)


    题目:

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.

    Example 1:

    Input: "aba"
    Output: True
    

    Example 2:

    Input: "abca"
    Output: True
    Explanation: You could delete the character 'c'.
    

    Note:

    1. The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

    分析:

    给定一个非空字符串,在最多删去一个字符的前提下,判断是不是回文字符串。

    由于删去一个字符也算是回文字符串,也就说以删去的字符为基础剩下的字符也同样应该是回文字符串。在这里我们以abcbda为例。

    从前后开始比较字符是否相同,当发现b和d不同时,我们要删除一个字符,来继续判断剩下的字符串是否是回文字符串,因为字符不同,前后两个都可以删除,所以返回的两个结果取并集。删除b的话,显然cbd不构成回文字符串,而删除d的话bcb构成回文字符串。

    程序:

    C++

    class Solution {
    public:
        bool validPalindrome(string s) {
            int l = 0;
            int r = s.size()-1;
            while(l < r){
                if(s[l] != s[r]){
                    return isPalindrome(s, l+1, r) || isPalindrome(s, l, r-1);
                }
                else{
                    r--;
                    l++;
                }
            }
            return true;
        }
    private:
        bool isPalindrome(string s, int l, int r){
            while(l < r){
                if(s[l++] != s[r--])
                    return false;
            }
            return true;
        }
    };

    Java

    class Solution {
        public boolean validPalindrome(String s) {
            int l = 0;
            int r = s.length()-1;
            while(l < r){
                if(s.charAt(l) != s.charAt(r))
                    return isPalindrome(s, l+1, r) || isPalindrome(s, l, r-1);
                l++;
                r--;
            }
            return true;
        }
        private boolean isPalindrome(String s, int l, int r){
            while(l < r){
                if(s.charAt(l++) != s.charAt(r--))
                    return false;
            }
            return true;
        }
    }
  • 相关阅读:
    过渡效果
    生命周期
    事件处理
    列表的搜索和排序
    DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 原创发布
    DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
    闲读
    POJ 3253 Fence Repair 贪心 优先级队列
    POJ 2431 Expedition 贪心 优先级队列
    优先级队列-堆-STL实现
  • 原文地址:https://www.cnblogs.com/silentteller/p/12293163.html
Copyright © 2020-2023  润新知