首页 > 其他 > 详细

680. 验证回文字符串 Ⅱ『简单』

时间:2020-07-13 22:35:23      阅读:56      评论:0      收藏:0      [点我收藏+]

题目来源于力扣(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);
}

680. 验证回文字符串 Ⅱ『简单』

原文:https://www.cnblogs.com/zhiyin1209/p/13295782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!