我找到了许多如何在字符串中查找重复字符的示例。我相信我的要求是独一无二的。
我有字符串
$string=aabbbccddd;
我需要确定哪个角色最重复。 因此,对于上面的例子,它会说 最重复的角色是“B”。 然而,在上面的例子中,B和D重复3次。 需要发现这一点。 B和D都重复了3次。
这是我到目前为止所拥有的。我需要的FAR,但从起点
<?php
$string = "aabbbccddd";
$array=array($array);
foreach (count_chars($string, 1) as $i => $val) {
$count=chr($i);
$array[]= $val.",".$count;
}
print_r($array);
?>
任何人都有可以帮助我的事情吗?
答案 0 :(得分:2)
这正是您所寻找的:
<?php
function printCharMostRepeated($str)
{
if (!empty($str))
{
$max = 0;
foreach (count_chars($str, 1) as $key => $val)
if ($max < $val) {
$max = $val;
$i = 0;
unset($letter);
$letter[$i++] = chr($key);
} else if ($max == $val)
$letter[$i++] = chr($key);
if (count($letter) === 1)
echo 'The character the most repeated is "'.$letter[0].'"';
else if (count($letter) > 1) {
echo 'The characters the most repeated are : ';
$count = count($letter);
foreach ($letter as $key => $value) {
echo '"'.$value.'"';
echo ($key === $count - 1) ? '.': ', ';
}
}
} else
echo 'value passed to '.__FUNCTION__.' can\'t be empty';
}
$str = 'ddaabbccccsdfefffffqqqqqqdddaaa';
printCharMostRepeated($str);
答案 1 :(得分:1)
根据georg的观点,我会使用正则表达式。这将使用数组键ddaaddd
和dd=>2
来处理分割重复项,例如ddd=>3
,但在给定dd
时,只会显示ddaadd
的一个条目。要表示两者都需要更复杂的数组:
$string = "ddaabbbccddda";
preg_match_all('/(.)\1+/', $string, $matches);
$result = array_combine($matches[0], array_map('strlen', $matches[0]));
arsort($result);
如果您只需要计算所有出现次数,请尝试:
$result = array_count_values(str_split($string));
arsort($result);
如果您没有拆分重复项:
$string = 'aabbbccddd';
$letters = str_split($string);
$result = array_fill_keys($letters, 1);
$previous = '';
foreach($letters as $letter) {
if($letter == $previous) {
$result[$letter]++;
}
$previous = $letter;
}
arsort($result);
print_r($result);
或者正则表达式:
preg_match_all('/(.)\1+/', $string, $matches);
$result = array_combine($matches[1], array_map('strlen', $matches[0]));
arsort($result);
答案 2 :(得分:0)
答案 3 :(得分:0)
<?php
$word = "abcdefghbi";
for($i=0; $i<strlen($word);$i++){
for($k=0;$k<strlen($word);$k++){
if($word[$i] == $word[$k] && $i != $k){
echo $word[$k]." is duplicate";
exit;
}
}
}
echo "no match found";
?>
答案 4 :(得分:0)
$data = "aabbbcccdddz";
$array = str_split($data);
$v = array_count_values($array);
foreach($v as $k => $val){
echo $k.' = '.$val.'<br>';
}