carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode844:比较含退格的字符串(backspace-string-compare) #148

Open carloscn opened 1 year ago

carloscn commented 1 year ago

问题分析

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。  

示例 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 = "b" 输出:false 解释:s 会变成 "c",但 t 仍然是 "b"。

提示:

1 <= s.length, t.length <= 200 s 和 t 只含有小写字母以及字符 '#'   进阶:

你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/backspace-string-compare

carloscn commented 1 year ago

问题分析

fn _convert(in_str:&String) -> String
{
    let v_char = (*in_str).chars();
    let mut ret_str = String::new();

    for i in v_char {
        if i != '#' {
            ret_str.push(i);
        } else {
            ret_str.pop();
        }
    }

    return ret_str;
}

fn back_string_compare(str1:&String, str2:&String) -> bool
{
    let a = _convert(str1);
    let b = _convert(str2);

    if a == b {
        return true;
    }

    return false;
}
carloscn commented 1 year ago

code

https://github.com/carloscn/structstudy/commit/84ade39d07361ab58d372feff383e7b8c6e8383a https://review.gerrithub.io/c/carloscn/structstudy/+/551048