zoukankan      html  css  js  c++  java
  • LeetCode--844--比较含退格的字符串(java)

    给定 ST 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

    示例 1:

    输入:S = "ab#c", T = "ad#c"
    输出:true
    解释:S 和 T 都会变成 “ac”。
    

    示例 2:

    输入:S = "ab##", T = "c#d#"
    输出:true
    解释:S 和 T 都会变成 “”。
    

    示例 3:

    输入:S = "a##c", T = "#a#c"
    输出:true
    解释:S 和 T 都会变成 “c”。
    

    示例 4:

    输入:S = "a#c", T = "b"
    输出:false
    解释:S 会变成 “c”,但 T 仍然是 “b”。

    提示:

    1. 1 <= S.length <= 200
    2. 1 <= T.length <= 200
    3. ST 只含有小写字母以及字符 '#'
     1 class Solution {
     2     public boolean backspaceCompare(String S, String T) {
     3         Stack<Character> stacks = new Stack<Character>();
     4         Stack<Character> stackt = new Stack<Character>();
     5         for(int i  = 0;i < S.length();i++){
     6             if(S.charAt(i)=='#' && !stacks.isEmpty()){
     7                 stacks.pop();
     8                 continue;
     9             }else if(S.charAt(i) != '#'){
    10                 stacks.push(S.charAt(i));
    11             }
    12             
    13         }
    14         for(int j  = 0;j < T.length();j++){
    15             if(T.charAt(j)=='#' && !stackt.isEmpty()){
    16                 stackt.pop();
    17                 continue;
    18             }else if(T.charAt(j) != '#'){
    19                 stackt.push(T.charAt(j));
    20             }
    21         }
    22         while(!stacks.isEmpty()&&!stackt.isEmpty()){
    23             if(stacks.pop()!=stackt.pop()){
    24                 //System.out.println("1");
    25                 return false;
    26             }
    27         }
    28         
    29         if((stacks.isEmpty() && !stackt.isEmpty() )||(!stacks.isEmpty() && stackt.isEmpty() )){
    30             //System.out.println("2");
    31             return false;
    32         }
    33         return true;
    34     }
    35 }

    官方大佬:

     1 class Solution {
     2     public boolean backspaceCompare(String S, String T) {
     3         char[] stack1 = new char[S.length()];
     4         char[] stack2 = new char[T.length()];
     5         int top1 = 0;
     6         for(int i = 0; i < S.length(); i++){
     7             if(S.charAt(i) != '#')
     8                 stack1[top1++] = S.charAt(i);
     9             else if(top1 > 0)
    10                 top1--;
    11         }
    12         int top2 = 0;
    13         for(int i = 0; i < T.length(); i++){
    14             if(T.charAt(i) != '#')
    15                 stack2[top2++] = T.charAt(i);
    16             else if(top2 > 0)
    17                 top2--;
    18         }
    19         if(top1 != top2)
    20             return false;
    21         for(int i = 0; i < top1; i++){
    22             if(stack1[i] != stack2[i])
    23                 return false;
    24         }
    25         return true;
    26     }
    27 }

    2019-03-08 11:10:32

  • 相关阅读:
    项目支持
    PHP wamp 环境配置
    事务 锁 高并发下的解决方法
    Hybrid开发
    Phonegap IOS 篇 -如何用虚拟机发布APP
    Visual Studio 切换到设计模式卡死解决方法
    批处理基本命令
    Phonegap Android篇
    jQuery插件——Validation Plugin
    PHP PDO学习(二) exec执行SQL
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/10494592.html
Copyright © 2011-2022 走看看