namespace RepeatSubStringCount { using System; using System.Collections.Generic; using System.Linq; using System.Text; /// <summary> /// 字符串计数类 /// </summary> class Program { /// <summary> /// 程序入口处 /// </summary> /// <param name="args">args</param> static void Main(string[] args) { //给定字符串 string str = "qabaabbwerabtyababuiopasdfghjkabl"; //集合建立 Dictionary<string,int> dic = new Dictionary<string,int>(); //子串 string subString = null; //将全部符合要求的字串放入Dictionary for (int i = 0; i < str.Length; i++) { for (int j = i+2; j < str.Length; j++) { subString = str.Substring(i,j-i); //若是存在该字串 if (dic.Keys.Contains(subString)) { //添加进入集合 //dic.Add(subString, Convert.ToInt32(dic[subString]) + 1); dic[subString] = dic[subString] + 1; } else { //不存在此字串 dic.Add(subString,1); } } } //输出符合要求的值 for (int i = 0; i < dic.Count(); i++) { //取得指定位置的key string key = dic.Keys.ElementAt(i); //经过key取得子串出现的次数 int value = Convert.ToInt32(dic[key]); //若是出现超过一次 if (value > 1) { Console.WriteLine("{0}\t{1}", key, value); } } Console.WriteLine("over"); //读取控制台输入,防止意外终止 Console.ReadLine(); } } }