二次函数不等式的解法,二次函数用基本不等式求最值
文章标题的解决方案1(临时变量)、解决方案2(快慢指针)和解决方案3 (Pythonic)
科目
字符串压缩。利用字符的重复数,写一个方法实现基本的字符串压缩功能。例如,字符串aabcccccaaa将变成a2b1c5a3。如果“压缩的”字符串没有缩短,将返回原始字符串。可以假设字符串只包含大写和小写的英文字母(A到Z)。
示例1:
输入:“aabcccccaaa”
输出:“a2b1c5a3”
示例2:
输入:“abbccd”
输出:“abbccd”
说明:“abbccd”压缩为“a1b2c2d1”,比原来的字符串长度要长。
提示:
字符串的长度在[0,50000]的范围内。
方案一(临时变量):用临时变量保存最后一个字符,用当前字符判断计数,遇到新字符时重新记录。这种写法还是强C的写法,因为临时整型变量可能会重新申请对象。
记录第一个字符,使用列表保存每个拼接的压缩字符来判断当前字符,如果与之前相同,则计数,否则,重新记录该字符,并将最后一个字符添加到列表中。时间复杂度:O (n)空间复杂度:O(n)类解:def compress string (self,S:str)-str:if len(S)==0:return S tmpChar=S[0]tmpCount=0 strLen=0 l=list()for item in S:if item==tmpChar:tmpCount=1 else:l . append( { } { } 。format(tmpChar,tmp count))tmp char=item tmp count=1 strlen=len(str(tmp count))1 #最后一个字符l.append({}{} 。format(tmpChar,tmp count))strlen=len(str(tmp count))1 Result=s if strlen(s):Result=“”。Join (l)返回结果方案二(快慢指针)思路:类似于方案一,在实际中是通过两个指针来实现的,慢指针始终指向字符的开始位置,快指针指向同一字符的结束位置。
使用起始索引定位当前字符,并访问字符串,直到起始位置到达字符串的末尾。当end index先到达字符串末尾时,会进入else模块进行拼接。class solution:def compress string(self,s: str)-str: start,end,sLen=0,0,len(S)result= tmp count=0 while start sLen:if ends len and S[start]==S[end]:tmp count=1 end=1 else:result= { } { } 。format(S[start],TMPCount) start=end TMPCount=0返回结果if len (result) len (s) else的解法三(Python)思路:利用Python自带的库函数itertools.groupby对字符串进行分类计数。
使用库函数获取字符串。使用三元运算返回结果class solution:def compress string(self,s: str)-str: s result=“”。join([item str(len(list(item str)))for item,itertools.groupby(S)中的itemStr)如果len(sResult) len(S) else