看板 C_Sharp 關於我們 聯絡資訊
想到一個問題 , 如果是給一個字串,從中找出連續同字母排列最長的字串並輸出, 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