zoukankan      html  css  js  c++  java
  • LeetCode844 比较含退格的字符串

    题目描述:

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

    示例 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. S 和 T 只含有小写字母以及字符 '#'
    /*
    解题思路:
    对于两个字符串,分别扫描元素,若与字母则添加到向量后面,若遇到#则删除向量最后一个元素,最后比较两个向量所剩元素是否相等。
    
    */
    class Solution {
    public:
        bool backspaceCompare(string S, string T) {
            vector<char>v1;  //操作S,字符类型
            vector<char>v2;  //操作T
            for(int i=0;i<S.size();++i){
                if(S[i]<='z' && S[i]>='a'){  //这里用'' 因为字符串的单个元素为字符
                    v1.push_back(S[i]);
                }
                else if(v1.empty())  //当向量为空时,无法删除最后一个元素,因为没有了。
                    continue;
                else
                    v1.pop_back();
            }
            for(int i=0;i<T.size();++i){
                if(T[i]<='z' && T[i]>='a'){
                    v2.push_back(T[i]);
                }
                else if(v2.empty())
                    continue;
                else
                    v2.pop_back();
            }
            if(v1.size()!=v2.size())
                return false;
            else{
                for(int i=0;i<v1.size();++i){
                    if(v1[i]!=v2[i])
                        return false;
                }
                return true;
            }       
        }
    };
  • 相关阅读:
    Intellij IDEA13 创建多模块Maven项目
    oracle锁
    oracle rac负载均衡
    awk命令
    政务外网、政务专网、政务内网和互联网
    图片切换实现选中-未选中效果
    生成带logo 的二维码
    控制input为number时样式
    移动端适配的解决方法?
    input-checkbox选中及非选中样式设置
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9924605.html
Copyright © 2011-2022 走看看