题解 | #压缩牛群编号#
压缩牛群编号
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题的解法思路
