public class MyClass
{
public static void GetNumber(string Target)
{
string MyString=Target;
while(MyString.Length!=0)
{
int i=0;
int count=0;
string s=MyString[0].ToString();
while(i <MyString.Length)
{
if(MyString[i++].ToString()==s)
count++;
}
Console.WriteLine("{0}共有个{1}",s,count);
MyString.Replace(s,"");//把等于第一个字符的都删除掉 估计改成stringbuilder 类型的更好些
}
}
public static void Main()
{
string a="aaaaaaaazzzbbbbbccccmmmmddddeeefffdddgggghhhiiaaaaiijbbbbjjjkkk";
MyClass.GetNumber(a);
Console.Read();
}
}
终极改进版如下
public static void GetNumber(string Target)
{
StringBuilder MyString=new StringBuilder(Target);
while(MyString.Length!=0) //只要长度不为零 就可以进行
{
int i=1; // 只要有长度 肯定至少有一个字符了
int count=1; // 至少一个了已经
string s=MyString[0].ToString();
while(i <MyString.Length)
{
if(MyString[i++].ToString()==s) //这块估计最耗费时间了 不用比较第一个字符了肯定相等的 直接从第二个开始比较
count++;
}
Console.WriteLine("{0}共有个{1}",s,count);
MyString.Replace(s,"");//把等于第一个字符的都删除掉
}
}
网友更好的
public void CountCharNum(string str)
{
int cnt = 0;
while ((cnt=str.Length) != 0)
{
string sub = str.Substring(0, 1);
str = str.Replace(sub, "");
cnt -= str.Length;
Console.WriteLine(sub + "=" + cnt.ToString());
}
}
999



被折叠的 条评论
为什么被折叠?



