当前位置 博文首页 > ljy320672584的博客:LeetCode笔记---Java语言->递归与栈->844

    ljy320672584的博客:LeetCode笔记---Java语言->递归与栈->844

    作者:[db:作者] 时间:2021-08-25 15:44

    LeetCode笔记—Java语言->递归与栈->844. 比较含退格的字符串

    栈的简述:

    栈:FILO先进后出,后进先出。从哪入从哪出

    栈适合解决的问题:可以处理具有完全包含关系的问题(表达式求值,递归,括号匹配,二叉树遍历)。

    栈的典型应用场景:
    场景一:操作系统中的线程栈
    场景二:表达式求值

    此题思路

    遇到退格出栈
    此题也是针对后面数据的操作,所以我们采用栈这个数据结构,当我们遇到退格符号时,就将栈顶元素弹出。不是退格符号,就将元素压入。

    class Solution {
        public boolean backspaceCompare(String s, String t) {
            LinkedList<Character> s1 = new LinkedList();//保存s字符串的栈
            LinkedList<Character> t1 = new LinkedList();//保存t字符串的栈
            /*遍历s字符串*/
            for(int i = 0;i<s.length();i++){
                if(s.charAt(i)=='#'){//遇到退格,只要栈不为空,就将栈顶元素弹出
                    if(!s1.isEmpty())
                        s1.pop();
                }else{
                    s1.push(s.charAt(i));//压入元素
                }
            }
            /*遍历t字符串*/
            for(int i = 0;i<t.length();i++){
                if(t.charAt(i)=='#'){//遇到退格,只要栈不为空,就将栈顶元素弹出
                    if(!t1.isEmpty())
                        t1.pop();
                }else{
                    t1.push(t.charAt(i));//压入元素
                }
            }
            if(s1.size()!=t1.size())//如果两个栈大小不一样,那么肯定两者不相等
                return false;
            while(!s1.isEmpty()){//循环条件,两者大小一致,同时弹出元素,所以判断其中一个是否为空就行
                if(s1.pop()!=t1.pop())//有一个位置上的元素不相同就返回false
                    return false;
            }
            return true;
        }
    }
    
    cs