• 1332. 删除回文子序列『简单』


    题目来源于力扣(LeetCode

    一、题目

    1332. 删除回文子序列

    题目相关标签:字符串

    说明:

    • 0 <= s.length <= 1000
    • s 仅包含字母 'a' 和 'b'

    二、解题思路

    1. 注意题意:回文子序列,而不是回文序列

      「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。

      「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。

    2. 又因为字符串中仅包含 ‘a’ 和 ’b‘

    3. 三种情况,三种返回结果:

      1. 字符串本身是回文序列,返回删除次数 1,一次性即可删除

      2. 字符串长度小于 1 时,返回删除次数 0

      3. 字符串本身不是回文序列时,返回删除次数 2,一次删除全部元素 a,一次删除剩余的全部元素 b

    三、代码实现

    public static int removePalindromeSub(String s) {
        int len = s.length();
        // 第一种情况:字符串长度小于 1 时,返回删除次数 0
        if (len < 1) {
            return 0;
        }
        int left = 0;
        int right = len - 1;
        // 左右双指针判断字符串是否回文序列
        while (left < right) {
            // 第二种情况:字符串本身不是回文序列时,返回删除次数 2
            // 一次删除全部元素 a,一次删除剩余的全部元素 b
            if (s.charAt(left) != s.charAt(right)) {
                return 2;
            }
            left ++;
            right --;
        }
        // 第三种情况:字符串本身是回文序列,返回删除次数 1
        return 1;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String s = "ababa";  // output:1
    //    String s = "abb";  // output:2
    //    String s = "baabb";  // output:2
    //    String s = "";  // output:0
        
        int result = removePalindromeSub(s);
        System.out.println(result);
    }
    
  • 相关阅读:
    【版本特性】sql server2012版本特性
    sql server2012中的format
    IOS插件管理器: alcatraz
    IOS中类似的。9.png图片
    IOS学习之路- 运行过程
    IOS学习之路--BLOCK
    IOS学习之路--OC的基础知识
    IOS学习之路-- 指针&宏函数
    域名解析问题。
    android点击状态分析
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12983977.html
Copyright © 2020-2023  润新知