我正在编写一个程序,它应该将一个字符串拆分成相同字母的组,然后 for each 组计算大小写字母的数量并将它们相乘,然后将每个组的值与整个字符串的总和相加,并输出总值.
因此,例如,如果字符串是"ccCeEEEcBbBbb",在第一组字母(Ccc)中有两个小写字母和一个大写字母(2x1),在第二组字母(Eeee)中有一个小写字母和三个大写字母(1x3),在第三组字母(C)中有一个小写字母,没有大写字母(1x0),在最后一组字母(Bbbbb)中有三个小写字母和两个大写字母(3x2)-因此总数将是(2x1)+(1x3)+(1x0)+(3x2)=2+3+0+6=11.
以下是我到目前为止编写的代码:
//string[] letters = { "a" };
//string[] letters = { "aA" };
//string[] letters = { "Aa" };
//string[] letters = { "AAa" };
//string[] letters = { "aaA" };
//string[] letters = { "aAa" };
//string[] letters = { "AaA" };
//string[] letters = { "aAabB" };
//string[] letters = { "aAabBB" };
//string[] letters = { "AAaBbBaaA" };
string[] letters = { "AaAbAaA" };
//string[] letters = { "ccCeEEEcBbBbb" };
foreach (string letter in letters)
{
int total = 0;
int upper = 0;
int lower = 0;
StringBuilder sb = new StringBuilder(letter.Length);
char lastChar = '\0';
foreach (char c in letter)
{
if (c != lastChar)
{
sb.Append(c);
lastChar = c;
}
}
string data = sb.ToString().ToLower();
for (int i = 0; i < data.Length; i++)
{
if (char.IsUpper(data[i]))
{
upper++;
}
else
{
lower++;
}
}
total = upper * lower;
Console.WriteLine(total);
}
到目前为止我面临的问题是
无论测试数据如何,控制台中的输出始终显示0.
Argument : Expected : Actual
----------------------------------------------------------------------
a : 0 : 0
aA : 1 : 0
Aa : 1 : 0
AAa : 2 : 0
aaA : 2 : 0
我转到调试器中的监视窗口,所有变量都有值,但我仍然不知道错误可能在哪里?
我有一种预感,使用char可能是个问题.