输入一个连续的字符串,输出一个字符串数组,规则是相邻的字符如果相同,那么就认为是同一个子串。我的实现如下
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}。