首页 > 其他分享 >比较含退格的字符串

比较含退格的字符串

时间:2023-06-15 14:37:18浏览次数:32  
标签:字符 idx 示例 StringBuffer 输入 字符串 比较 退格


比较含退格的字符串

题目:
给定 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 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 ‘#’。

解题思路: 看到题目就想到了用栈或者StringBuffer, 最后选择了StringBuffer, 在字符串中查找’#‘找到了就判断’#‘下标是否为0, 如果为0说明’#‘前没有字符就只需要删除’#’, 否则就删除’#'和前一个字符.

class Solution {
    public boolean backspaceCompare(String S, String T) {
        StringBuffer s = new StringBuffer(S);
        StringBuffer t = new StringBuffer(T);
        
        f(s);
        // System.out.println("s = " + s);
        f(t);
        // System.out.printf("t = %s", t);
        return s.toString().equals(t.toString());
    }
    
    private void f(StringBuffer s) {
        int idx = s.indexOf("#");
        while(idx != -1) {
            if(idx == 0) {
                s.deleteCharAt(idx);
            }
            
            else s.delete(idx - 1, idx + 1);
            // System.out.println(s);
            idx = s.indexOf("#");
        }
    }
}

ps:需要注意的一个点是: StringBuffer的equals方法没有进行重写, 所以要比较两个StringBuffer是否相等需要转化成String进行比较.


标签:字符,idx,示例,StringBuffer,输入,字符串,比较,退格
From: https://blog.51cto.com/u_14813899/6487204

相关文章

  • JavaScript中将字符串转换为数字的七种方法总结 乘以数字: str = '2344'; console.lo
    JavaScript中将字符串转换为数字的七种方法总结乘以数字:str='2344';console.log(str*1)//expectedresult:2344https://www.jb51.net/article/261613.htm+目录1.使用parseInt()2.使用Number()3.使用一元运算符(+)4.使用parseFloat()5.使用Math.floor()6.乘......
  • VUE使用Element-ui表达式拼接字符串 el-table-column的prop拼接字符串 拼接table 使
    VUE使用Element-ui表达式拼接字符串el-table-column的prop拼接字符串使用<templateslot-scope="scope">更改td里面值https://blog.csdn.net/WindNolose/article/details/125422409描述VUE中的标签属性,可以在属性前使用:,让属性绑定到data中的动态数据el-table-column标......
  • 每日一道leetcode:8. 字符串转换整数 (atoi)
    1.题目(中等)题目链接请你来实现一个myAtoi(strings)函数,使其能将字符串转换成一个32位有符号整数(类似C/C++中的atoi函数)。函数myAtoi(strings)的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果......
  • python基础知识——字符串
    1、字符串的格式化python将若干值插入到带有“%”标记的字符串中,实现动态地输出字符串。格式:"%s"%str"%s%s"%(str_1,str_2)例如:str_0="I"str_1="Love"str_2="China"format="%s%s%s"%(str_0,str_1,str_2)printformat#ILoveChi......
  • StringPtr StringPtrs 字符串指针 字符串指针切片
    funcBoolPtr(vbool)*bool{  return&v}funcStringPtr(vstring)*string{  return&v} funcStringPtrs(vals[]string)[]*string{  ptrs:=make([]*string,len(vals))  fori:=0;i<len(vals);i++{    ptrs[i]=&v......
  • mongo聚合字符串类型的数字进行排序
    设置collationCollationcollation=Collation.of(Locale.CHINESE).numericOrdering(true);设置聚合选项Aggregationaggregation=Aggregation.newAggregation(Aggregation.match(orOperator),).withOptions(AggregationO......
  • 【数据结构和算法面试题】左旋转字符串
    问题分析:本题是常见的旋转字符串的问题,解决的方法是两步旋转的方法:方法:voiddo_reverse(char*p_start,char*p_end){ if(NULL==p_start||NULL==p_end||p_start>p_end)return; chartmp; while(p_start<p_end){ tmp=*p_start; *p_start=*p_end; *p_end......
  • 代码随想录算法训练营第七天| 344.反转字符串 、 541. 反转字符串II、 剑指Offer 05.
     344.反转字符串代码:1voidreverseString(vector<char>&s){23inti=0;4intj=s.size()-1;5while(i<j)6{7charmid=s[i];8s[i]=s[j];9s[j]=mid;1011i++;12......
  • PHP基础——字符串的常用操作
    在PHP中使用较多的是字符串的操作,字符串的常用操作主要有如下的几种:字符串的表示字符串的连接去除字符串中的空格和特殊字符字符串的比较分割字符串和合成字符串1、字符串的表示在PHP中,字符串有两种表示的方法:-单引号:”-双引号:”“如:<?php$str_1="Hello\n";......
  • boost库之字符串处理
    一、Boost.StringAlgorithmsBoost字符算法库Boost.StringAlgorithms提供了很多字符串操作函数,字符串的类型可以是std::string,std::wstring,或者是任何模板类std::basic_string的实例。这些函数分类别在不同的头文件定义,例如大小写转函数定义在文件boost/algorithm/string/case_c......