当前位置: 面试刷题>> 字符串压缩 (经典算法题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 编写的字符串压缩算法的示例代码。码小课网站中有更多关于算法和数据结构的学习内容,欢迎大家前往学习交流,共同提升编程技能。