Re: [闲聊] 每日leetcode

楼主: JerryChungYC (JerryChung)   2024-11-04 12:52:04
https://leetcode.com/problems/string-compression-iii
3163. String Compression III
给一个字串 word 回传压缩后的字串 comp
首先给一个空字串 comp 当 word 非空时
1. 删除最多9个由单一字符 c 组成的前缀
2. 把数量与字符 c 加到 comp
Example 1:
Input: word = "abcde"
Output: "1a1b1c1d1e"
Example 2:
Input: word = "aaaaaaaaaaaaaabb"
Output: "9a5a2b"
Constraints:
1 <= word.length <= 2 * 10^5
word 只包含小写英文字母
思路:
照着做就好了 最后一次的记得要补上
Python Code:
class Solution:
def compressedString(self, word: str) -> str:
comp = ''
current_char = word[0]
cnt = 1
for w in word[1:]:
if w == current_char and cnt < 9:
cnt += 1
else:
comp += f'{cnt}{current_char}'
cnt = 1
current_char = w
comp += f'{cnt}{current_char}'
return comp
原本用 comp = [] 跟 return ''.join(comp)
不过结果上来说直接改字串空间花更少 时间则差不多 是数量不多的原因吗
JavaScript 用直接改字串则比开 array 快了一半的时间 23 ms / 47 ms
不过也有可能是 leetcode 自己的问题 ((

Links booklink

Contact Us: admin [ a t ] ucptt.com