题解 | #压缩牛群编号#
压缩牛群编号
https://www.nowcoder.com/practice/db9dd240e5f54b6d8eeadfbd9b7f865f
- 题目考察的知识点 : 字符串
- 题目解答方法的文字分析:
- 使用双指针法遍历原始字符数组 chars,对于每组连续相同字符:
- 记录该组连续相同字符的数量 count;如果 count 等于 1,则将当前字符直接拷贝到新的字符数组中;否则,将当前字符和 count 转换成的字符数组依次拷贝到新的字符数组中
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param chars char字符型一维数组 # @return char字符型一维数组 # class Solution: def compress(self, chars: List[str]) -> List[str]: n = len(chars) # 原始字符数组长度 writeIndex = 0 # 新的字符数组写入位置 count = 1 # 记录连续相同字符的数量 for i in range(1, n): if chars[i] == chars[i - 1]: count += 1 else: chars[writeIndex] = chars[i - 1] # 将前一个字符拷贝到新的字符数组中 writeIndex += 1 if count > 1: # 如果当前字符连续出现次数大于1,则将其压缩成字符+数量的形式 countStr = str(count) for ch in countStr: chars[writeIndex] = ch writeIndex += 1 count = 1 # 重置计数器 # 处理最后一个字符 chars[writeIndex] = chars[n - 1] writeIndex += 1 if count > 1: countStr = str(count) for ch in countStr: chars[writeIndex] = ch writeIndex += 1 # 返回新的字符数组长度 return chars[0:writeIndex]
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路