• 844. 比较含退格的字符串『简单』


    题目来源于力扣(LeetCode

    一、题目

    844. 比较含退格的字符串

    题目相关标签:栈、双指针

    提示:

    • 1 <= S.length <= 200
    • 1 <= T.length <= 200
    • ST 只含有小写字母以及字符 '#'

    二、解题思路

    1. 两个字符串进行去 # 号的操作

    2. 遍历两个字符串,遇到 # 号且栈中不为空时,弹出栈顶元素,即表示退格的操作

    3. 为字母字符时,将字母字符压入栈中

    4. 最后判断两个字符串是否元素相同

    三、代码实现

    public static boolean backspaceCompare(String S, String T) {
        // 空值判断及字符串长度为 0 的判断
        if (null == S || S.isEmpty() || null == T || T.isEmpty()) {
            return false;
        }
    
        char[] sarr = S.toCharArray();
        char[] tarr = T.toCharArray();
    	// 判断去除 # 后号的字符串是否相等
        return elementToStack(sarr).equals(elementToStack(tarr));
    }
    
    public static String elementToStack(char[] arr) {
        Stack<Character> stack = new Stack<>();
    
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == '#') {
                if (!stack.empty()) {
                    stack.pop();
                }
            } else {
                stack.push(arr[i]);
            }
        }
        return new String().valueOf(stack);
    }
    
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String S = "ab#c", T = "ad#c";  // output: true
    //    String S = "ab##", T = "c#d#";  // output: true
    //    String S = "a##c", T = "#a#c";  // output: true
    //    String S = "a#c", T = "b";  // output: false
    
        boolean result = backspaceCompare(S, T);
        System.out.println(result);
    }
    
  • 相关阅读:
    GenericServlet vs HttpServlet
    il c井
    额。。万恶之源就是c
    js算数优先级
    connect-flash 中间件
    触发bfd 的条件
    module 和 module.exports 的区别
    a标签填充父容器
    bootstrap
    每日一练排版
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13227352.html
Copyright © 2020-2023  润新知