获取字符串中不重复的字符并统计它们

我需要处理一个字符串,例如abclkjabc并仅返回3计算字符l、k和 的字符串j。


我已经尝试过这个。


$stringArr = [];

foreach(str_split($string) as $pwd) {

   if(!in_array($pwd, $stringArr)) {

      $stringArr[] = $pwd;

   }

}

$uniqChar = count($stringArr);


萧十郎
浏览 139回答 3
3回答

慕容708150

请尝试以下方法:function getNonRepeatingCharacters($str) {    $counter = [];    $spllitted = str_split($str);    foreach($spllitted as $s) {        if(!isset($counter[$s])) $counter[$s] = 0;        $counter[$s]++;    }    $non_repeating = array_keys(array_filter($counter, function($c) {        return $c == 1;    }));    return $non_repeating;}$string = "abclkjabc";$handle = getNonRepeatingCharacters($string);

UYOU

函数式编程并且没有临时变量声明:创建字符数组统计每个字符出现的次数仅保留出现过一次的字符(array_filter()也可以,但更冗长)重新加入符合条件的角色代码:(演示)(或只是计数)echo implode(         array_keys(             array_intersect(                 array_count_values(                     str_split('abclkjabc'),                 ),                 [1]             )         )     );或者使用带有循环的半功能:(演示)(或只是计数)$unique = '';foreach (array_count_values(str_split('abclkjabc')) as $char => $count) {    if ($count === 1) {        $unique .= $char;    }}echo $unique;输出:lkj可以使用 获取输出字符串的长度strlen()。您可以使用 来计算字符值,而不是拆分字符串和计数数组值count_chars()。(演示)$string = 'abclkjabc';$notRepeated = [];foreach (count_chars($string, 1) as $char => $count) {    if ($count === 1) {        $notRepeated[] = chr($char);    }}var_export($notRepeated);echo "\nCount = " . count($notRepeated);最终,如果您只需要计算非重复字符的数量,这一行就可以满足您的要求。(演示)echo count(array_filter(count_chars($string, 1), fn($count) => $count === 1));

慕姐4208626

尝试这个:function getNonRepeatingChars($str) {    $uniqueLetters = '';    $multipleLetters = '';    $arrayStr = str_split($str);    foreach ($arrayStr as $index => $letter) {        if (strpos($multipleLetters, $value) !== false || strpos($str, $value, $index + 1) !== false) {            $multipleLetters .= $value;            continue;        }        $uniqueLetters .= $value;    }    return $uniqueLetters;}echo getNonRepeatingChars('abclkjabc'); // lkj
打开App,查看更多内容
随时随地看视频慕课网APP