当前位置: 面试刷题>> 字符串压缩 (经典算法题500道)


### 题目描述补充 **字符串压缩**:给定一个字符串,你需要编写一个函数来压缩这个字符串。压缩的规则是:如果字符串中的连续字符重复出现,则将它们压缩成该字符后跟一个表示该字符重复次数的数字。但是,如果字符仅出现一次,则不需要进行压缩。最后,返回的压缩字符串中不允许包含前导零。 **示例**: - 输入:"aaabbcddde" - 输出:"a3b2c1d3e1" - 解释:'a' 重复 3 次,'b' 重复 2 次,'c' 出现 1 次,'d' 重复 3 次,'e' 出现 1 次。 ### PHP 示例代码 ```php function compressString($s) { $result = ''; $count = 1; $prevChar = $s[0]; for ($i = 1; $i <= strlen($s); $i++) { if ($i < strlen($s) && $s[$i] === $prevChar) { $count++; } else { $result .= $prevChar . strval($count); if ($i < strlen($s)) { $prevChar = $s[$i]; $count = 1; } } } return $result; } // 测试 echo compressString("aaabbcddde"); // 输出:a3b2c1d3e1 ``` ### Python 示例代码 ```python def compressString(s): result = [] count = 1 prev_char = s[0] for char in s[1:]: if char == prev_char: count += 1 else: result.append(f"{prev_char}{count}") prev_char = char count = 1 # 添加最后一个字符和它的计数 result.append(f"{prev_char}{count}") return ''.join(result) # 测试 print(compressString("aaabbcddde")) # 输出:a3b2c1d3e1 ``` ### JavaScript 示例代码 ```javascript function compressString(s) { let result = ''; let count = 1; let prevChar = s[0]; for (let i = 1; i < s.length; i++) { if (s[i] === prevChar) { count++; } else { result += prevChar + count.toString(); prevChar = s[i]; count = 1; } } // 添加最后一个字符和它的计数 result += prevChar + count.toString(); return result; } // 测试 console.log(compressString("aaabbcddde")); // 输出:a3b2c1d3e1 ``` **码小课**:以上是用 PHP、Python 和 JavaScript 编写的字符串压缩算法的示例代码。码小课网站中有更多关于算法和数据结构的学习内容,欢迎大家前往学习交流,共同提升编程技能。
推荐面试题