程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

java----比较含有退格的字符

发布于2021-03-13 14:07     阅读(1177)     评论(0)     点赞(10)     收藏(2)


  • 问题描述
    比较含有退格的字符( ‘#’ 该字符表示退格 ).
    S = “qwer#ee#c”;
    T = “qwer#ec”
    退格后的字符串为
    s = “qweec”;
    t = “qweec”
    因此两个字符串相等.
  • 解决思路
  1. 先创建两个栈, 用于存放退格后真正的字符串.
  2. 当遇到字符就进栈, 遇到 ‘#’ (该字符表示退格) 则出栈.
  3. 弹出栈中元素进行比较, 不相等返回 false, 所有都相等就返回 true;
  • 源代码
import java.util.Deque;
import java.util.LinkedList;

public class java0312 {
    public boolean backspaceCompare(String S, String T) {
        // 记录退格后的字符串
        Deque<Character> s = new LinkedList<>();
        Deque<Character> t = new LinkedList<>();

        if (S != null) {
            for (int i = 0; i < S.length(); i++) {
                if (S.charAt(i) != '#') {
                    s.push(S.charAt(i));
                } else {
                    if (!s.isEmpty()) {
                        s.pop();
                    }
                }
            }
        }
        if (T != null) {
            for (int i = 0; i < T.length(); i++) {
                if (T.charAt(i) != '#') {
                    t.push(T.charAt(i));
                } else {
                    if (!t.isEmpty()) {
                        t.pop();
                    }
                }
            }
        }

        while (!s.isEmpty() && !t.isEmpty()) {
            if (s.pop() != t.pop()) {
                return false;
            }
        }
        if (s.isEmpty() && t.isEmpty()) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        java0312 java0312 = new java0312();
        System.out.println(java0312.backspaceCompare("adc#c", "add#c"));
    }
}

原文链接:https://blog.csdn.net/m0_50527451/article/details/114706144



所属网站分类: 技术文章 > 博客

作者:欧美丽

链接:http://www.javaheidong.com/blog/article/114205/eea3d676d8a58d4ecf58/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)