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);
    }
    
  • 相关阅读:
    1、Elasticsearch教程-从入门到精通
    3、ik分词器
    2、ElasticSearch的安装
    svn操作
    2020-10
    编写第一个linux驱动
    字符设备驱动
    Linux下/dev和/sys/class的区别
    latex
    Qt
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13227352.html
Copyright © 2011-2022 走看看