字符串的长度包括0吗,字符串的长度是什么意思

  

  描述字符串压缩。利用字符的重复数,写一个方法实现基本的字符串压缩功能。例如,字符串aabcccccaaa将变成a2b1c5a3。如果“压缩的”字符串没有缩短,将返回原始字符串。可以假设字符串只包含大写和小写的英文字母(A到Z)。   

  

  示例1:   

  

  输入:“aabcccccaaa”输出:“a2 B1 C5 a3”示例2:   

  

  输入:' abbccd '输出:' abbccd '解释:' abbccd '压缩成' a1b2c2d1 ',比原来的字符串长度还长。提示:   

  

  字符串的长度在0,50000的范围内。   

  

  解决问题的思路:日常问题的一个简单问题。问题的描述已经说明了解决方法。可以按照问题描述中描述的压缩步骤写一次代码,或者使用双指针方法遍历字符串得到压缩结果。双指针法还有很多其他问题,比如用一次遍历找到单向链表倒数第n个节点。   

  

  Code classsolution:def压缩字符串(self,s : str)-str 3360返回self。doublepointer2 (s) def基本方法(self,S: str) -str: ' '基本方法。' ' if s=='' 3360返回s Tag=0 S2=' ' for ch in s : if ch==Tag 3360n=1 else 3360 S2=tagstr(n)Tag=ch n=1 S2=Tag str(n)if len(S2)=len(s):返回s else3360返回s2 def double pointer (self,s:str)-str3360 ' '双指针方法,计算连续字符串。'' ' if s=='' 3360返回s i,j=0,0 S2=' '而j len(S): if S==S :j=1 Else : S2=S str(j-I)I=j S2=S str(j-I)if len(S2)=len(S)3360返回Else 3360返回S2 def双指针2 (self,S:STR)-STR3360 ' ' '另一种写法,两个指针。'' ' if s=='' 3360返回s I=0n=len (s) S2=' '而I n3360j=I while j n和S==S S :j=1 S2=S str(j-I)I=j if len(S2)=n :返回S ELSE 3360返回S2更多LeetCode。敬请期待。   

  

     

相关文章