844. Backspace String Compare

本文介绍了一种在O(N)时间复杂度和O(1)空间复杂度下比较两个带有#字符作为退格操作的字符串是否相等的算法。通过从字符串尾部开始迭代,有效地处理了退格操作,实现了高效字符串比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

Example 1:

Input: S = “ab#c”, T = “ad#c”
Output: true
Explanation: Both S and T become “ac”.
Example 2:

Input: S = “ab##”, T = “c#d#”
Output: true
Explanation: Both S and T become “”.
Example 3:

Input: S = “a##c”, T = “#a#c”
Output: true
Explanation: Both S and T become “c”.
Example 4:

Input: S = “a#c”, T = “b”
Output: false
Explanation: S becomes “c” while T becomes “b”.
Note:

1 <= S.length <= 200
1 <= T.length <= 200
S and T only contain lowercase letters and ‘#’ characters.
Follow up:

Can you solve it in O(N) time and O(1) space?

Problem URL


Solution

给两个string,#表示删除,问两个string输入之后是否是一样的。

We iterate the two strings from tail to head. Using a for loop to delete ‘#’ and the characters it deleted. Then judge whether the pointers are approached end.

Code
class Solution {
    public boolean backspaceCompare(String S, String T) {
        int i = S.length() - 1;
        int j = T.length() - 1;
        while(true){
            for (int count = 0; i >= 0 && (count > 0 || S.charAt(i) == '#'); i--){
                count += S.charAt(i) == '#' ? 1 : -1;
            }
            for (int count = 0; j >= 0 && (count > 0 || T.charAt(j) == '#'); j--){
                count += T.charAt(j) == '#' ? 1 : -1;
            }
            if (i >= 0 && j >= 0 && S.charAt(i) == T.charAt(j)){
                i--;
                j--;
            }
            else{
                return i == -1 && j == -1;
            }
        }
    }
}

Time Complexity: O(n)
Space Complexity: O(1)


Review
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值