栈-E844-比较含退格的字符串

题目

  • 概述:给定两个含退格的字符串,比较这两个字符串的有效部分是否相等

退格表示自己本身和靠近它左侧的第一个字符(如果有的话)是无效字符

  • 输入:
  1. 字符串S,范围[1, 200]
  2. 字符串T,范围[1, 200]

S和T只含有小写字符和退格字符'#'

思路

  • 由于题目中包含退格这一关键字,可以考虑用栈来做

  • 对于将要入栈的字符串S中的字符c,如果c为'#',则弹出栈顶元素(如果栈不为空的话),否则将c入栈,对字符串T做相同处理

  • 依次弹出两个栈中的元素,若所有元素都相等,则两个字符串相等,反之则不相等

代码

class Solution {
    public boolean backspaceCompare(String S, String T) {
        LinkedList<Character> sStack = new LinkedList<>();
        LinkedList<Character> tStack = new LinkedList<>();
        for (char c : S.toCharArray()) {
            if (c == '#') {
                if (!sStack.isEmpty()) {
                    sStack.pop();
                }
            } else {
                sStack.push(c);
            }
        }
        for (char c : T.toCharArray()) {
            if (c == '#') {
                if (!tStack.isEmpty()) {
                    tStack.pop();
                }
            } else {
                tStack.push(c);
            }
        }
        
        while (!sStack.isEmpty() && !tStack.isEmpty()) {
            if (sStack.pop() != tStack.pop()) {
                return false;
            }
        }
        return sStack.isEmpty() && tStack.isEmpty();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 雨在下, 淅淅沥沥的 整个世界颠倒了, 路上的行人走在水中, 雨在下 雨水渐渐汇成了 许许多多条长长的线, 这些线...
  • 上一章 第一章 夜荀 诸神大陆是个玄幻大陆,魔法与斗气并存,甚至有许多神秘的隐世家族拥有更多的奇奇怪怪的能力,...
    赜熙阅读 345评论 0 0
  • “生活的最佳状态就是在清清冷冷中活得风风火火。” 我在很多地方都看到过一个问题:“如果抛开所有负担,比如金钱,你最...
    一只小布瓜阅读 900评论 0 5
  • 哈哈,玩车高兴回酒店,小霸王玩起
    baby大鹏展翅阅读 216评论 0 0

友情链接更多精彩内容