• 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;
            }       
        }
    };
  • 相关阅读:
    Hive性能分析和优化方法
    浅谈MySQL中优化sql语句查询常用的30种方法
    spark 源码阅读博客
    spark shell学习笔记
    用shell 实现对MySQL数据库分页
    hive 1.2 配置
    spark1.4配置安装
    HBase学习
    【转】解密饿了么大前端团队
    【转】我心目中的支付宝架构
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9924605.html
Copyright © 2020-2023  润新知