字符串压缩
输入:"aabcccccaaa" 输出:"a2b1c5a3"
示例2:
输入:"abbccd" 输出:"abbccd" 解释“abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
这个题可以直接按照题的意思去写,依次从前往后遍历,初始化字母次数为1,如果后面的数字和当前数字相同,则次数+1,不相等就把前面的字母和对应的数字添加到结果中,然后把字母次数重新初始化为1.对于最后一个字符,要单独处理,因为后面没有与之对应的字母,所以单独处理即可.
class Solution: def compressString(self, S: str) -> str: n = len(S) if n <= 1: return S S += '#' curr = S[0] cnt = 1 res = '' for i in range(1, n + 1): if S[i] != curr: res += curr + str(cnt) if len(res) >= n: return S[:n] curr = S[i] cnt = 1 else: cnt += 1 return res
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206897.html原文链接:https://javaforall.net
