输入一个连续的字符串,输出一个字符串数组,规则是相邻的字符如果相同,那么就认为是同一个子串。我的实现如下
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //*------------------Ctrix Project-------------*// namespace ConsoleApplication1 { /// <summary> /// main class /// </summary> class Program { /// <summary> /// main function /// Creator:Y /// Create Date:2014-11-26 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine("Please input string:"); string inputString = Console.ReadLine(); string[] array = GetSubStringArray(inputString); Console.WriteLine("Output string Array:"); foreach (string s in array) { Console.WriteLine(s); } Console.Read(); } /// <summary> /// input string and get the sub-string array /// </summary> /// <param name="s">input string</param> /// <returns>sub-string array</returns> public static string[] GetSubStringArray(string s) { string[] subStringArray; if (string.IsNullOrEmpty(s)) { return null; } else if (s.Length == 1) { subStringArray = new string[1]; subStringArray[0] = s; return subStringArray; } else { int j = 0; List<string> list = new List<string>(); string temp=string.Empty; string flag = s.Substring(0,1); for (int i = 1; i < s.Length; i++) { temp=s.Substring(i,1); if (flag != temp) { list.Add(s.Substring(j,i-j)); j = i; flag=s.Substring(j,1); } } if (flag != list[list.Count - 1]) { list.Add(s.Substring(j)); } return list.ToArray(); } } } }
例如输入“abbcddefffg”,期待的结果就是一个数组{a,bb,c,dd,e,fff,g}。