作者adrianc (123)
看板C_Sharp
标题Re: [问题] 同字母排列最长的字串
时间Fri Mar 26 15:39:29 2010
自原文推文中 lei 大的方法实作
int tIndex = 0, mIndex = 0, max = 1;
if (input.Length > 1)
{
for (int i = 1; i < input.Length; i++)
{
if (input[i] != input[i - 1])
{
int len = i - tIndex;
if (len > max)
{
max = len;
mIndex = tIndex;
}
tIndex = i;
}
}
}
else
max = input.Length;
return input.Substring(mIndex, max);
实测在字串长的情况下,效率会出现明显差异
如果只有几十到几百字元的话,用哪种就无所谓了
※ 引述《paulyanzi (消失)》之铭言:
: 想到一个问题 ,
: 如果是给一个字串,从中找出连续同字母排列最长的字串并输出,
: EX: input ="djaaakkppppewqqqTwyyyyy";
: 结果应该是:yyyyy
: input ="djaaakkppppewqqqTwyyy";
: 结果应该是:pppp
: 我简单的方法如下
: string input ="ddddjaaakkpppewqqqTwyyyyy";
: string t2="",max="";
: foreach (char temp in input)
: {
: if (t2.EndsWith(temp.ToString()))
: {
: t2 += temp;
: }
: else
: { //当换字母的时候才会做
: if(t2.Length>max.Length)
: max = t2;
: t2 = temp.ToString();
: }
: }
: if(t2.Length>max.Length)max=t2;
: Console.WriteLine(max);
: 但是感觉应该会有更好的做法 不知道有没有人有其他想法呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.126.146.20
1F:推 F23ko:我绝得主要还是 t2 += temp; 的问题 03/26 16:23
2F:→ adrianc:建议你实测看看... 03/28 21:13