找出重複出現的字符串(長度大於1的連續字符組合

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();
        }
    }
}
相關文章
相關標籤/搜索