题目描述补充
字符串压缩:给定一个字符串,你需要编写一个函数来压缩这个字符串。压缩的规则是:如果字符串中的连续字符重复出现,则将它们压缩成该字符后跟一个表示该字符重复次数的数字。但是,如果字符仅出现一次,则不需要进行压缩。最后,返回的压缩字符串中不允许包含前导零。
示例:
- 输入:"aaabbcddde"
- 输出:"a3b2c1d3e1"
- 解释:'a' 重复 3 次,'b' 重复 2 次,'c' 出现 1 次,'d' 重复 3 次,'e' 出现 1 次。
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 示例代码
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 示例代码
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 编写的字符串压缩算法的示例代码。码小课网站中有更多关于算法和数据结构的学习内容,欢迎大家前往学习交流,共同提升编程技能。