我有一个字符串“ Bbcdefcgh!”我想计算不同的重复字符。解决方案应将大写和小写字母视为不同的字符,并同时处理字母数字和特殊字符。
例如:给定一个字符串“ Bbcdefcgh !!”该函数应返回2(“ c”和“!”)
class DuplicateChar
{
public function test1()
{
return $this->duplicateCharacters("Bbcdefcgh!!");
}
public function duplicateCharacters($input)
{
//
}
}
$o = new DuplicateChar;
echo $o->test1();
答案 0 :(得分:4)
您可以在此处使用一些很酷的功能:
$str = 'Bbcdefcgh!!';
$arr = str_split($str);
$data = array_filter(array_count_values($arr), function($el)
{
return ($el > 1);
});
echo '<pre>'. print_r($data, 1) .'</pre>';
我们使用str_split
将字符串拆分为一个数组,然后使用array_count_filter
过滤值以仅获取重复超过1个的项目。
参考:
编辑:使用count_chars
如NigelRen所指出,可以使用count_chars()
:
count_chars —返回有关字符串中使用的字符的信息
$data = "Two Ts and one F.";
foreach (count_chars($data, 1) as $i => $val)
{
echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n";
}
答案 1 :(得分:1)
您可以使用str_split
和array_count_values
来解决这个问题
$str = 'Bbcdefcgh!!';
$textToArray = str_split($str);
echo '<pre>';
print_r(array_count_values($textToArray));
结果
Array
(
[B] => 1
[b] => 1
[c] => 2
[d] => 1
[e] => 1
[f] => 1
[g] => 1
[h] => 1
[!] => 2
)