c#中 一个含有字符串的数组,例如:["a","b","a","c","b","d","a"],需要得到一个新数组 ["a1","b1","a2","c","b2","d","a3"] 只出现一次的字符串不变
时间: 2023-12-21 10:31:20 浏览: 55
字符串中第一个只出现一次的字符.md
可以使用字典来记录每个字符串出现的次数,然后根据次数来构建新的数组。具体步骤如下:
1. 创建一个空字典`count_dict`来记录每个字符串出现的次数。
2. 遍历原始数组,对于每个字符串:
- 如果该字符串已经在`count_dict`中存在,将其对应的次数加1。
- 如果该字符串不在`count_dict`中,将其添加到`count_dict`中,并将其对应的次数初始化为1。
3. 创建一个新的数组`new_array`,用于存储结果。
4. 遍历原始数组,对于每个字符串:
- 如果该字符串在`count_dict`中的次数大于1,将其在`new_array`中的值修改为原字符串加上对应的次数。
- 如果该字符串在`count_dict`中的次数等于1,将其在`new_array`中的值保持不变。
5. 返回`new_array`作为结果。
下面是使用C#实现上述算法的代码示例:
```csharp
using System;
using System.Collections.Generic;
public class Program
{
public static string[] GetNewArray(string[] array)
{
Dictionary<string, int> countDict = new Dictionary<string, int>();
foreach (string str in array)
{
if (countDict.ContainsKey(str))
{
countDict[str]++;
}
else
{
countDict[str] = 1;
}
}
string[] newArray = new string[array.Length];
for (int i = 0; i < array.Length; i++)
{
if (countDict[array[i]] > 1)
{
newArray[i] = array[i] + countDict[array[i]];
}
else
{
newArray[i] = array[i];
}
}
return newArray;
}
public static void Main(string[] args)
{
string[] array = { "a", "b", "a", "c", "b", "d", "a" };
string[] newArray = GetNewArray(array);
foreach (string str in newArray)
{
Console.WriteLine(str);
}
}
}
```
运行以上代码,将会输出新的数组`["a1","b1","a2","c","b2","d","a3"]`。
阅读全文