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(); } } }