码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode844 栈·比较含退格的字符串(C++)

时间:2018-11-07 20:15:03      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:backspace   public   文本编辑器   amp   一个   输入   字符   描述   solution   

题目描述:

给定 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;
        }       
    }
};

 

LeetCode844 栈·比较含退格的字符串(C++)

标签:backspace   public   文本编辑器   amp   一个   输入   字符   描述   solution   

原文地址:https://www.cnblogs.com/parzulpan/p/9924605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!