• LeetCodeJava题解 844. Backspace String Compare


    题目地址:844. Backspace String Compare
    解题思路:这道题按常理来说有两种解法。
    1.用栈来实现
    2.用双指针法来实现。
    此处我仅记录一下我用双指针法的解题过程。首先,肯定是不能创建额外空间的,因为只有O(1)的空间复杂度。当检索到#的时候,即代表着退格,就删除一个元素,那么对这个删除的元素,我们根本不需要care,因为他已经被删除了,我们需要关心的是“留下来”的字符。又因为删除的方向是从右向左,所以指针的起点可以落在字符串的最右边,skipTskipS负责记录#的个数,当#的个数为0的时候,需要对当前字符进行比较,所以跳出小循环,等待另一个字符串的遍历结果;当另一个字符串也跳出循环后,两个字符串当前指向的字符就是需要比较的字符串,如果不相等,则游戏结束返回false。如果相等则根据当前指针的位置进行判断,假如两个字符串的指针都在最左边则比较完毕,两字符串相等,否则则继续比较,直至大循环结束。

    class Solution {
        public boolean backspaceCompare(String s, String t) {
           int skipS=0,skipT=0;
            int i=s.length()-1,j=t.length()-1;
            while (i>=0||j>=0){
                while (i>=0){
                    if (s.charAt(i)=='#'){
                        skipS++;
                        i--;
                    }else if (skipS>0){
                        skipS--;
                        i--;
                    }else break;
                }
    
                while (j>=0){
                    if (t.charAt(j)=='#'){
                        skipT++;
                        j--;
                    }else if (skipT>0){
                        skipT--;
                        j--;
                    }else break;
                }
    
                if (i>=0&&j>=0){
                    if (s.charAt(i)!=t.charAt(j))
                        return false;
                }else if (i>=0||j>=0)
                    return false;
                i--;
                j--;
            }
            return true;
        }
    }
    
  • 相关阅读:
    flash player over linux
    chmod 命令
    A*算法
    adb找不到设备
    ubuntu14.04安装wine以及国际版QQ
    linux man
    X-window
    linux file system
    linux command
    directUI
  • 原文地址:https://www.cnblogs.com/hooyeefam/p/15961404.html
Copyright © 2020-2023  润新知