日期:2014-05-17  浏览次数:20736 次

求教,下面算法如何简化,写了1小时,感觉很拉杂,求指点
无意间看到CSDN有个在线编程题目,大致是: 计算 类似于bibinbingbbiinngg这样的字符串 可以在不交换字符顺序的情况下组成多少个bing 。 由于是技术渣,又没学过算法,所以求小伙伴们指点一下,或者有什么比较好的方法


        static void Main(string[] args)
        {
            Console.WriteLine(howmany("bibinbing"));
        }
        static List<char> list_b = new List<char>();
        static List<char> list_i = new List<char>();
        static List<char> list_n = new List<char>();
        static List<char> list_g = new List<char>();
        public static int howmany(string s)
        {
            foreach (char c in s.ToCharArray())
            {
                list_b.Add(c);
            }
            int res = 0;
            while (list_b.Contains('b'))
            {
                Remove(list_b, out list_i, 'b');
                while (list_i.Contains('i'))
                {
                    Remove(list_i, out list_n, 'i');
                    while (list_n.Contains('n'))
                    {
                        Remove(list_n, out list_g, 'n');
                        res += list_g.Count(l => l == 'g');
                    }
                }
            }
            return res;
        }

        private static void Remove(List<char> list,out List<char> _list,char c)