具体题是这样的:有一个字符串:"aaaabbbbcccccKKKK"写个小程序返回得是"a4b4c5K4"用c#能帮个忙吗,各位大侠,拜托了

解决方案 »

  1.   

    一个思路:用26个char的数组,是哪个字母则放到对应的元素位置,最后输出。当然,直接扫描字符串也可以。
      

  2.   

    string str = "";
    string pstr = @"(\w)\1*";
    MatchCollection mc = Regex.Matchs(str,pstr);
    str = "";
    for(int i=0;i<mc.Count;i++)
    {
     str += mc[i].Value.SubString(0,1)+mc[i].Value.Length.ToString();
    }
    //输出str
    //试试
      

  3.   

    楼上有点小错
    应为MatchCollection mc = Regex.Matches(str, pstr);
      

  4.   

    楼上有点小错
    应为MatchCollection mc = Regex.Matches(str, pstr);
      

  5.   

    不好意思啊,问了个比较傻得问题"输出语句怎么写",这种方法是不错,不错结果不是我想要得,例如str="aaabbscsccs" 我想要得结果是a3b3s3c3但是这种方法得结果是a3b2s1c1s1c2s1,不过还是非常感谢各位大侠,呵呵
      

  6.   


    这个问题跟正则没什么关系
    private string CountChar(string src)
    {
        Dictionary<char, int> dic = new Dictionary<char, int>();
        foreach (char c in src)
        {
            if (dic.Keys.Contains(c))
                dic[c]++;
            else
                dic.Add(c, 1);
        }
        StringBuilder sb = new StringBuilder();
        foreach (char a in dic.Keys)
            sb.Append(string.Empty + a + dic[a]);
        return sb.ToString();
    }
    //调用
    string test = "aaabbscsccs";
    richTextBox2.Text = CountChar(test);
    //输出:a3b2s3c3
      

  7.   

    嗯,刚刚在一个帖子里偷学回来的string test = "aaabbscsccs";
    var result = from c in test group c by c;
    foreach (var g in result)
        richTextBox2.Text += string.Empty + g.Key + g.Count();
    //输出:a3b2s3c3
      

  8.   

            private string GetSameCount(string str)
            {
                int length=str.Length;
                string result=string.Empty;
                while(length>0)
                {
                    string tempChar=str[0].ToString();
                    str=str.Replace(tempChar,"");
                    result+=tempChar+(length-str.Length);
                    length=str.Length;
                }
                return result;
            }
      

  9.   

    http://topic.csdn.net/u/20090113/11/FAE56D8D-DC0B-4A22-899E-3F5F8986FFAA.html
    这里很多
      

  10.   

    private string a(string str)
    {
    string[] shu=new string[str.Length];
    string sr="";
    for(int i=0;i<str.Length;i++)
    {
    shu[i]=str.Substring(i,1);
    }
    for(int i=0;i<shu.Length;i++)
    {
    int jishu=0;
    string dang=shu[i];
    for(int j=0;j<shu.Length;j++)
    {
    if(dang==shu[j] && shu[j]!=null)
    {
    jishu++;
    shu[j]=null;
    }
    }
    if(dang!=null)
    sr+=dang+jishu.ToString();
    }
    return sr;
    }
    写完之后,还是觉得11楼的比较简洁
      

  11.   

    string test = "aaabbscsccs";
    var result = from c in test group c by c;
    foreach (var g in result)
        richTextBox2.Text += string.Empty + g.Key + g.Count();
    //输出:a3b2s3c3
    用Linq的确方便.
      

  12.   

    有很多的。刚昨天看到一样的帖子!里面用了各语言和技术,很好!
    http://topic.csdn.net/u/20090113/11/fae56d8d-dc0b-4a22-899e-3f5f8986ffaa.html
    就这个贴。真的学了很多!
    求算一任意长度字符串中不同的字符以及它的个数?(设计一个漂亮的算法,快而优美) 
    如在 字符串"abcdefgabc"中求算出的结果是 
    a,2 
    b,2 
    c,2 
    d,1 
    e,1 
    f,1 
    g,1 以一个普通的算法开个头吧. 
    public static class MyMethod 
        { 
            public static Queue <char> GetOnlyCharFromString(string str) 
            { 
                Queue <char> myQueue = new Queue <char>(); 
                for (int i = 0; i < str.Length; i++) 
                { 
                    if (myQueue.Contains(str[i]) == false) 
                        myQueue.Enqueue(str[i]); 
                } 
                return myQueue; 
            } 
            public static Dictionary <char,int> GetInfoFormString(string str) 
            { 
                Queue <char> myQueue = GetOnlyCharFromString(str ); 
                Dictionary <char,int> myDictionary=new Dictionary <char,int>(); 
                int oldQueueCount = myQueue.Count;//记录下它原有的量; 
                for(int i=0;i <oldQueueCount ;i++) 
                { 
                    char myChar=myQueue.Dequeue(); 
                    int num=0; 
                    for(int j=0;j <str.Length;j++) 
                    { 
                        if(str[j]==myChar) 
                            num++; 
                    } 
                    myDictionary.Add(myChar,num); 
                } 
                return myDictionary; 
            }     }
      

  13.   

    呵呵,时间有限,简单点来凑点热闹。
       string str="aaaabbbbcccccKKKK";
        循环遍利字符串数组,如果是a,那么CountA++;如果是b,那么CountB++.....
        最后输出  a+"{0}"..b{1}..,CountA,CountB,... 
        随便搞的几下,按照这个思路是应该没有问题的,呵呵!!~~~
      

  14.   

    输出语句 呵呵 C#的  Console.write(...,...);
      

  15.   

    用LINQ太简单了,为什么大家都不用LINQ呢?string a = "aaaabbbbcccccKKKK";
    foreach (var x in
                 a.ToCharArray().GroupBy(s => s).Select(s => s.Key.ToString() + s.Count().ToString()))
    {
             Console.Write(x);
    }这个程序有个缺点,如果同一组数中间有间隔,结果就不对了,比如这个
    string a = "aaaabbbbcccccbbKKKK";
    输出:a4b6c5K4,而不是 a4b4c5b2K4
    如果输出是后者,用一条LINQ可能不行了