【发布时间】:2015-09-06 19:46:52
【问题描述】:
我正在尝试解析一个字符串并删除相同的相邻字母。我想返回删除次数并在删除后输出结果字符串。说我有
$str = "aaabbbcc";
如您所见,您需要删除 5 次才能使相邻的字母不相同。 $output 字符串为"abc",删除次数为five。
function str_deletions ($str)
{
$prev = $str[0];
$length = strlen($str);
$deletions = 0;
$output = "";
for ($i=1 ; $i < $length; $i++)
{
if ($str[$i]== $prev)
{
$deletions++;
$prev = $str[$i]; // not sure here ?
}
}
echo $output; // ?
return $deletions;
}
$str = "aabbcc";
echo str_deletions ($str);
编辑
这是一个面试问题,我不应该使用任何内置函数,如regex or array_count_values
谢谢你的帮助 !
【问题讨论】:
-
是的,正则表达式会更简单。 Remove repeating character 的可能重复项
-
@mario 我也想统计删除的数量..
-
preg_replace('/[a-z]+/', '$1', $str);或类似的东西。删除量:strlen($str)-strlen($result)。 未测试