比如: ababcdebc,那他最大的子字符串就是:abcde

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication4{    class Program{        static void Main(string[] args){            string s = "abcababcdefgfg";            char[] list = s.ToCharArray();            FindMaxSubDifferenceString ss = new FindMaxSubDifferenceString();ss.FindMaxSubDifferenceStringS(list, s.Length);            string s1 = "aaaaaa";            char[] list1 = s1.ToCharArray();ss.FindMaxSubDifferenceStringS(list1, s1.Length);            string s2 = "ababab";            char[] list2 = s2.ToCharArray();ss.FindMaxSubDifferenceStringS(list2, s2.Length);            string s3 = "abcababcdefgfgabcababcdefgfg";            char[] list3 = s3.ToCharArray();ss.FindMaxSubDifferenceStringS(list3, s3.Length);}}     public class FindMaxSubDifferenceString{        public bool IsDup(char[] list, int len, char targetChar, int begin, int end, out int targetIndex){targetIndex = -1;            // Note: first, we need to check all parameters are valid, such as list is null, len >0, or begin 
0, end
<=end; i++){                if(list[i]==targetChar){targetIndex = i;                    return true;}}             return false;}        public void FindMaxSubDifferenceStringS(char[] list, int len){            if (list == null) return;            if (len <= 0) return;            int maxSubStringLen = 0;            int maxSubStringBeginIndex = 0;            int currentMaxSubStringBeginIndex = 0;            int currentMaxSubLen = 0;            for (int i = 1; i < len; i++){                int dupIndex = -1;                if (IsDup(list, len, list[i], currentMaxSubStringBeginIndex, i - 1, out dupIndex)){currentMaxSubLen = i - currentMaxSubStringBeginIndex;                    if (currentMaxSubLen > maxSubStringLen){maxSubStringLen = currentMaxSubLen;maxSubStringBeginIndex = currentMaxSubStringBeginIndex;}                    else{}currentMaxSubStringBeginIndex = dupIndex + 1;}                else //not dup{}}             if (maxSubStringLen == 0){maxSubStringLen = len;}            Console.Write("Input string: ");            for (int i = 0; i < len; i++){                Console.Write(list[i]);}            Console.WriteLine("");            Console.Write("After Input: ");            for (int i = maxSubStringBeginIndex; i < maxSubStringBeginIndex + maxSubStringLen; i++){                Console.Write(list[i]);}            Console.WriteLine("");}}}