首页 > 其他分享 >Leetcode——1957、删除字符使字符串变好

Leetcode——1957、删除字符使字符串变好

时间:2023-08-24 15:59:39浏览次数:45  
标签:字符 string 删除 1957 拼接 字符串 Leetcode append

一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。

给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 。

请你返回删除后的字符串。题目数据保证答案总是 唯一的 

 

示例 1:

输入:s = "leeetcode"
输出:"leetcode"
解释:
从第一组 'e' 里面删除一个 'e' ,得到 "leetcode" 。
没有连续三个相同字符,所以返回 "leetcode" 。

示例 2:

输入:s = "aaabaaaa"
输出:"aabaa"
解释:
从第一组 'a' 里面删除一个 'a' ,得到 "aabaaaa" 。
从第二组 'a' 里面删除两个 'a' ,得到 "aabaa" 。
没有连续三个相同字符,所以返回 "aabaa" 。

示例 3:

输入:s = "aab"
输出:"aab"
解释:没有连续三个相同字符,所以返回 "aab" 。

 

提示:

  • 1 <= s.length <= 10e5
  • s 只包含小写英文字母。

思路很清晰,字符串长度最长10e5,所以遍历一次,利用计数器去计数,若超过三个则跳过当前字符去找下一个字符,若下一个字符和上一个字符不相同那么计数器就重新计数,遍历一遍即可得到答案。但是当我准备提交的时候发现,竟然超时了(ΩДΩ)!正当我百思不得其解去评论区逛的时候,发现了一个人和我的思路一模一样只是用的方法不太一样,我利用的是字符串的直接拼接,也就是string+string,而他用的是StringBuilder的append方法。于是我把方式也换成了append方法,竟然过了!

后来通过查询其他资料,发现了string+string字符串拼接和StringBuilder的append方法拼接效率是不同的!如果少量的字符串拼接,几乎是不影响的,但是如果需要拼接大量字符串,那么StringBuilder的append方法要比string+string方法的效率要高得多。原因是因为String在进行运算时会产生一个新的实例,而StringBuilder却不会,string+string实质上是将两个字符串写进内存,删除原来的string对象,再创建一个新的string对象,,读取内存中的数据赋给该对象,而Stringbuilder的append方法能够在已有对象的原地进行字符串的修改

有用的知识又增加了!Σ(⊙▽⊙"a

标签:字符,string,删除,1957,拼接,字符串,Leetcode,append
From: https://www.cnblogs.com/Yuansj0206/p/17654296.html

相关文章

  • Leetcode 1. 两数之和(Two sum)
    题目链接......
  • Leetcode 1782. 统计点对的数目
    这两天实训比较忙,之后补TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovakCzechItalianSlovenianDanishJapane......
  • leetcode 12
    算法介绍:哈希贪心实现代码如下classSolution{public:stringintToRoman(intnum){//哈希贪心 strings[]={"M","CM","D","CD","C","XC","L","XL","X","IX......
  • FastJson不成想还有个版本2啊:序列化大字符串报错
    背景发现陷入了一个怪圈,写文章的话,感觉只有大bug或比较值得写的内容才会写,每次一写就是几千字,争取写得透彻一些,但这样,我也挺费时间,读者也未必有这么多时间看。我想着,日常遇到的小bug、平时工作中的一些小的心得体会,都还是可以写写,这样也才是最贴近咱们作为一线开发生活的,也不必......
  • ChatGPT 问答00021 java 对字符串进行高度压缩的算法
    Java中对字符串进行高度压缩的算法有很多种,下面我介绍两种常见的方法。Run-LengthEncoding(RLE)算法RLE算法是一种简单且高效的字符串压缩算法。它通过将连续重复的字符序列替换为一个字符和其重复次数的表示来实现压缩。示例代码如下:publicstaticStringcompressStrin......
  • 字符串
    字符串APIAPI就是一种别人已经写好的东西,我们不需要自己会写,我们只需要知道怎么使用就行java中的API指的就是JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如......
  • JS判断字符串不为空:
    一:不为空functionisNotEmptyStr(strval){  if(typeofstrval=='string'&&strval.length>0){    returntrue  }  returnfalse}二:判断字符串为空:functionisEmptyStr(strval){  if(strval==null||strval==undefined||strval===......
  • iOS开发Swift-字符串与字符
    1.字符串的定义letsomeString="somestringvalue"2.多行字符串的定义(""")letquotation="""有一个人前来买瓜。"这瓜甜吗?"他问。""" 前一个"""前和后一个"""后无换行//前一个"""前和后一个......
  • Leetcode605——种花问题
    假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n......
  • java-将列表格式化成json字符串
    List<String>list=newArrayList<>();list.add("{'county':'china','age':18}");list.add("{'county':'japan','age':28}");......