不用list,直接用string的方法就可以。
static void Main(string[] args)
{
int cnt = 0;
Console.WriteLine("请输入一段字符串:");
string str = Console.ReadLine();
Console.WriteLine("集合里元素数目:" + str.Length);
while (str.Length > 0)
{
char s = str[0];
int sum = 0;
while (str.IndexOf(s) >= 0)
{
str = str.Remove(str.IndexOf(s), 1);
sum ++;
}
Console.WriteLine("第{0}个字符是{1},有{2}个", cnt, s, sum);
cnt++;
}
Console.WriteLine("不同字符数: " + cnt);
Console.ReadKey();
}
汗! 你第一个s移除以后 list里面的元素就只有3个了
而i在移除第一个s 然后再循环过来的时候就等于2
档i=2的时候 第一个for(i=2;2<3;i++)还是满足条件可以循环下去 所以显示第2个字符是s
但是下面一个for(j=i+1=2+1;3<3;j++)这个循环肯定是不满足的所以这个循环不满足 继续第一个for
这个时候i=3 那么第一个也不满足了 跳出整个循环 显示list.count
新建一个List ,将list中的数据copy过去,然后移除的时候移除新建的List