33,008
社区成员
发帖
与我相关
我的任务
分享
public static string maxSubstring(string bigString)
{
string value = bigString;
if (bigString != null && bigString.Length >1)
{
char stringChar;
Dictionary<char, int> charIndex = new Dictionary<char, int>();//记录字符起始位置
int length = bigString.Length, maxLength = 0, maxIndex = 0, startIndex = 0;
for (int charLength, i = 0; i < length; i++)
{
if (charIndex.ContainsKey(stringChar = bigString[i]))
{
if (charIndex[stringChar] >= startIndex)
{//发现重复字符
if ((charLength = i - startIndex) > maxLength)
{//修改最大子串起始位置
maxLength = charLength;
maxIndex = startIndex;
}
if ((startIndex = charIndex[stringChar] + 1) + maxLength >= length) break;//检测是否结束
}
charIndex[stringChar] = i;
}
else charIndex.Add(stringChar, i);
}
value = ((length -= startIndex) > maxLength ? bigString.Substring(startIndex) : bigString.Substring(maxIndex, maxLength));//比较最后串与已发现的最大串
}
return value;
}