为了能到远方,脚下的每一步都不能少.|

TranquilGlow

园龄:2年7个月粉丝:1关注:0

2023-07-08 19:53阅读: 5评论: 0推荐: 0

leecode844比较含有退格的字符串

leecode844比较含有退格的字符串

代码分析

暴力解法

class Solution {
    public boolean backspaceCompare(String s, String t) {
        //暴力解法
        int s_length=s.length();
        int t_length=t.length();
        char[] ch1 = new char[s_length];
        char[] ch2 = new char[t_length];
        int fast=0,low=0;
        for(fast=0;fast<s_length;fast++){
            if(s.charAt(fast)!='#'){
                ch1[low] = s.charAt(fast);
                low++;
            }else {
                low--;
                ch1[low]='\u0000';
            }
        }
        low=0;
        //没有考虑第一个是回车符号,这样的话我们数组的范围可能是错误的
        for(fast=0;fast<t_length;fast++){
            if(t.charAt(fast)!='#'){
                ch2[low] = t.charAt(fast);
                low++;
            }else {
                low--;
                ch1[low]='\u0000';
            }
        }
        //然后比较这两个字符数组就可以了
        //我们可以直接比较这两个字符数组
        //int max = s_length>t_length?s_length:t_length;
        fast= 0;
        low=0;
        while(ch1[fast]!='\u0000'&&ch2[low]!='\u0000'){
            if(ch1[fast]!=ch2[low]){
                return false;
            }
            fast++;
            low++;
        }
        if(ch1[fast]=='\u0000'&&ch2[low]=='\u0000'){
            return false;
        }
        return true;
        /*s=new String(ch1);
        t= new String(ch2);
        if(s.equals(t)){
            return true;
        } else return false;*/
    }

建立stringBuilder快速模拟栈的操作

        StringBuilder ssb = new StringBuilder(); // 模拟栈
        StringBuilder tsb = new StringBuilder(); // 模拟栈
        // 分别处理两个 String
        for (char c : s.toCharArray()) {
            if (c != '#') {
                ssb.append(c); // 模拟入栈
            } else if (ssb.length() > 0){ // 栈非空才能弹栈
                ssb.deleteCharAt(ssb.length() - 1); // 模拟弹栈
            }
        }
        for (char c : t.toCharArray()) {
            if (c != '#') {
                tsb.append(c); // 模拟入栈
            } else if (tsb.length() > 0){ // 栈非空才能弹栈
                tsb.deleteCharAt(tsb.length() - 1); // 模拟弹栈
            }
        }
        return ssb.toString().equals(tsb.toString());
        

本文作者:TranquilGlow

本文链接:https://www.cnblogs.com/xuehaiqiule/p/17621644.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TranquilGlow  阅读(5)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起