作者paulyanzi (消失)
看板C_Sharp
標題[問題] 同字母排列最長的字串
時間Tue Mar 23 22:28:04 2010
想到一個問題 ,
如果是給一個字串,從中找出連續同字母排列最長的字串並輸出,
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: 114.32.193.105
→ F23ko:常常變動字串的話,建議用StringBuilder。 03/23 22:45
推 leicheong:我會只儲max,最長字串的index,目前index和目前length 03/23 22:53
→ leicheong:一路walk下去就對了. String[i]可以直接取出char不用 03/23 22:54
→ leicheong:StringBuilder... 03/23 22:54
→ leicheong:有index也有length就可以直接用substring印出答案, 不用 03/23 22:55
→ leicheong:再walk一次吧... 03/23 22:55
推 F23ko:foreach (char temp2 in input) {} ← 也可以這樣用 03/23 22:58
修改了 F23ko 的建議
※ 編輯: paulyanzi 來自: 114.32.193.105 (03/24 02:01)
→ adrianc:如果考量效率的話 lei大的方式應該比較好 03/26 15:27
→ adrianc:試作看看好了 03/26 15:28