zoukankan      html  css  js  c++  java
  • 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);
    }
    
  • 相关阅读:
    HDU 5213 分块 容斥
    HDU 2298 三分
    HDU 5144 三分
    HDU 5145 分块 莫队
    HDU 3938 并查集
    HDU 3926 并查集 图同构简单判断 STL
    POJ 2431 优先队列
    HDU 1811 拓扑排序 并查集
    HDU 2685 GCD推导
    HDU 4496 并查集 逆向思维
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13227352.html
Copyright © 2011-2022 走看看