zoukankan      html  css  js  c++  java
  • 680. 验证回文字符串 Ⅱ『简单』

    题目来源于力扣(LeetCode

    一、题目

    680. 验证回文字符串 Ⅱ

    题目相关标签:字符串

    注意:

    1. 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。

    二、解题思路

    1. 通过左右双指针遍历字符串 s

    2. 若左右指针上的元素不相等时,说明字符串 s 不是回文串

    3. 再次判断是否可以通过删除一个元素的方式来满足字符串 s 成为回文串

    4. 通过“删除” left 索引上的元素与 right 索引上的元素,来判断字符串 s 是否为回文串

    三、代码实现

    public static boolean validPalindrome(String s) {
        int left = 0, right = s.length() - 1;
        while (left <= right) {
            if (s.charAt(left) == s.charAt(right)) {
                left ++;
                right --;
            } else {
                // 字符串 s 不为回文串时,进行删除一个字符后,再判断是否回文串的操作
                boolean flagA = true, flagB = true;
                // 循环,判断删除 right 索引上的元素后,字符串是否为回文
                for (int i = left, j = right - 1; i <= j - 1; i++, j--) {
                    if (s.charAt(i) != s.charAt(j)) {
                        flagA = false;
                        break;
                    }
                }
                // 循环,判断删除 left 索引上的元素后,字符串是否为回文
                for (int i = left + 1, j = right; i <= j; i++, j--) {
                    if (s.charAt(i) != s.charAt(j)) {
                        flagB = false;
                        break;
                    }
                }
                // 二者有一个为 true,则结果为 true
                return flagA || flagB;
            }
        }
        return true;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String str =  "aba";  // output: true
    //    String str =  "abca";  // output: true
    //    String str =  "abccdba";  // output: true
    
        boolean result = validPalindrome(str);
        System.out.println(result);
    }
    
  • 相关阅读:
    3.24课堂
    3.23作业
    3.23课堂
    3.20作业
    3.20课堂
    3.19作业
    3.19课堂
    3.18课堂
    3.18作业
    46、表与表的连接
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13295782.html
Copyright © 2011-2022 走看看