繁体   English   中英

如何查找仅在字符串中出现一次的数字?

[英]How to find numbers that only appears once in a string?

假设我有输入字串

String 1 : 1234123
String 2 : 76523752

从这些字符串中,我想知道哪些数字只会出现一次。 所以我的输出应该是

String 1 : array(4)
String 2 : array(6,3)

我猜我将使用strpos()完成此任务,但我无法获得任何逻辑流程来实现这一目标。 你能帮我解决这个问题吗?

作为备选:

$string = "1235235236";
$res=[];
foreach(str_split($string) as $c) $res[$c]++; 
$res = array_filter($res, function($a){return $a == 1;}); 
var_dump($res);

无聊的解决方案,但行得通

$string="1234123";
$result=array();
foreach (count_chars($string, 1) as $i => $val) {
     if($val==1) $result[]=chr($i);
}
print_r($result);

使用array_keysarray_filterarray_count_valuesstr_split函数的解决方案:

$strings = [
    'String 1' => '1234123',
    'String 2' => '76523752'
];

$result = [];
foreach ($strings as $k => $v) {
    $result[$k] = array_keys(array_filter(array_count_values(str_split($v)), function($v){
        return $v == 1;
    }));
}

print_r($result);

输出:

Array
(
    [String 1] => Array
        (
            [0] => 4
        )

    [String 2] => Array
        (
            [0] => 6
            [1] => 3
        )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM