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

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication4{classProgram{staticvoidMain(string[]args){strings="abcababcdefgfg";char[]list=s.ToCharArray();FindMaxSubDifferenceStringss=newFindMaxSubDifferenceString();ss.FindMaxSubDifferenceStringS(list,s.Length);strings1="aaaaaa";char[]list1=s1.ToCharArray();ss.FindMaxSubDifferenceStringS(list1,s1.Length);strings2="ababab";char[]list2=s2.ToCharArray();ss.FindMaxSubDifferenceStringS(list2,s2.Length);strings3="abcababcdefgfgabcababcdefgfg";char[]list3=s3.ToCharArray();ss.FindMaxSubDifferenceStringS(list3,s3.Length);}} publicclassFindMaxSubDifferenceString{publicboolIsDup(char[]list,intlen,chartargetChar,intbegin,intend,outinttargetIndex){targetIndex=-1;//Note:first,weneedtocheckallparametersarevalid,suchaslistisnull,len>0,orbegin<end,begin>0,end<len,etcfor(inti=begin;i<=end;i++){if(list[i]==targetChar){targetIndex=i;returntrue;}} returnfalse;}publicvoidFindMaxSubDifferenceStringS(char[]list,intlen){if(list==null)return;if(len<=0)return;intmaxSubStringLen=0;intmaxSubStringBeginIndex=0;intcurrentMaxSubStringBeginIndex=0;intcurrentMaxSubLen=0;for(inti=1;i<len;i++){intdupIndex=-1;if(IsDup(list,len,list[i],currentMaxSubStringBeginIndex,i-1,outdupIndex)){currentMaxSubLen=i-currentMaxSubStringBeginIndex;if(currentMaxSubLen>maxSubStringLen){maxSubStringLen=currentMaxSubLen;maxSubStringBeginIndex=currentMaxSubStringBeginIndex;}else{}currentMaxSubStringBeginIndex=dupIndex+1;}else//notdup{}} if(maxSubStringLen==0){maxSubStringLen=len;}Console.Write("Inputstring:");for(inti=0;i<len;i++){Console.Write(list[i]);}Console.WriteLine("");Console.Write("AfterInput:");for(inti=maxSubStringBeginIndex;i<maxSubStringBeginIndex+maxSubStringLen;i++){Console.Write(list[i]);}Console.WriteLine("");}}}