我有一个string[]像这样的价值观
string[] s = { "saravanan", "Karthick", "Jackson", "saravanan" };
Run Code Online (Sandbox Code Playgroud)
我想看下面的输出
saravanan发生2次
Karthick发生1次
Jackson发生1次
如何在不使用 List或的情况下执行此操作Dictionary
这是我到目前为止所尝试的:
int i, j;
String[] s = {"saravanan", "Karthick", "Jackson", "saravanan"}
Console.WriteLine("Number of Times occured Each Values");
for (i = 0; i < s.Length; i++)
{
int count = 0;
for (j = 0; j < s.Length; j++)
{
if (s[i] == (s[j]))
{
count++;
}
}
Console.WriteLine(s[i]+"is count="+count);
}
Run Code Online (Sandbox Code Playgroud)
该代码产生此输出:
发生的次数每个值 saravananis
计数= 2
Karthickis计数= 1
Jacksonis计数= 1
saravananis计数= 2
通常,我们通过Linq解决这些问题(查询)
string[] s = new[] {
"saravanan", "Karthick", "Jackson", "saravanan" };
var result = string.Join(Environment.NewLine, s
.GroupBy(item => item)
.Select(chunk => $"{chunk.Key} occures {chunk.Count()} times"));
Console.Write(result);
Run Code Online (Sandbox Code Playgroud)
在的情况下,嵌套循环(当前的代码),我们应该不会打印出相同的名字多次.让我们来介绍bool appeared一下之前是否出现了名字
string[] s = new[] {
"saravanan", "Karthick", "Jackson", "saravanan" };
for (i = 0; i < s.Length; i++) {
int count = 0;
bool appeared = false;
for (j = 0; j < s.Length; j++) {
if (s[i] == (s[j])) {
// Names are same. Do we have the name before?
if (j < i) {
// If yes we have no need to loop any more
appeared = true;
break;
}
count++;
}
}
// if name has been appeared already we shouldn't print it out
if (!appeared)
Console.WriteLine(s[i] + "is count=" + count);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |