我有一串数字,我想计算该字符串包含多少个唯一数字。
例子:
111222
1002345
000000
Run Code Online (Sandbox Code Playgroud)
预期输出:
111222 2
1002345 6
000000 1
Run Code Online (Sandbox Code Playgroud)
我使用以下代码实现了这一点:
111222
1002345
000000
Run Code Online (Sandbox Code Playgroud)
有什么办法可以改进上面的代码吗?我觉得有不必要的循环。
不知道它是否符合你对“改进”的定义,但你可以这样做:
str.Where(x => char.IsDigit(x)).GroupBy(x => x).Count();
Run Code Online (Sandbox Code Playgroud)
在这里查看:
https://dotnetfiddle.net/t5OW6T
编辑:
正如评论中所注意到的,您也可以使用Distinctisn 代替GroupBy(x => x)。
GroupBy(x => x)如果您想知道digit字符串中出现的频率,这会很有用,可以这样做:
str.Where(x => char.IsDigit(x)).GroupBy(x => x).Select(x => (x.Key, x.Count()))
Run Code Online (Sandbox Code Playgroud)
您不是调用Count“整个”分组结果,而是评估Count分组结果的每个单独组。
您可以在这里找到一个示例:
https://dotnetfiddle.net/D60ygZ