我试图创建一个方法来查找字符串中重复字符的数量.因此,例如,DuplicateCount("aabbcde")将返回2并且DuplicateCount("aabBcde")还将返回2.我首先想到创建此方法是将整个字符串转换为小写,然后根据其ASCII值计算字符出现的次数.所以这是我的代码:
public static int DuplicateCount(string str)
{
int[] buffer = new int[128]; //128 possible ASCII characters
string lower = str.ToLower();
int dups = 0;
for (int i = 0; i < str.Length; i++)
{
int num = (int)str[i];
buffer[num]++; //increase
if (buffer[num] == 2)
{
dups++;
}
}
return dups;
}
Run Code Online (Sandbox Code Playgroud)
当字符串包含大写字符时,此方法将不起作用.此方法不起作用的原因是因为str.ToLower()调用不会更改字符的ASCII值,即使字符串本身更改为全部小写.有谁知道为什么会这样?你会怎么解决它?