[問題] 同字母排列最長的字串

看板C_Sharp作者 (消失)時間14年前 (2010/03/23 22:28), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/3 (看更多)
想到一個問題 , 如果是給一個字串,從中找出連續同字母排列最長的字串並輸出, 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

03/23 22:45, , 1F
常常變動字串的話,建議用StringBuilder。
03/23 22:45, 1F

03/23 22:53, , 2F
我會只儲max,最長字串的index,目前index和目前length
03/23 22:53, 2F

03/23 22:54, , 3F
一路walk下去就對了. String[i]可以直接取出char不用
03/23 22:54, 3F

03/23 22:54, , 4F
StringBuilder...
03/23 22:54, 4F

03/23 22:55, , 5F
有index也有length就可以直接用substring印出答案, 不用
03/23 22:55, 5F

03/23 22:55, , 6F
再walk一次吧...
03/23 22:55, 6F

03/23 22:58, , 7F
foreach (char temp2 in input) {} ← 也可以這樣用
03/23 22:58, 7F
修改了 F23ko 的建議 ※ 編輯: paulyanzi 來自: 114.32.193.105 (03/24 02:01)

03/26 15:27, , 8F
如果考量效率的話 lei大的方式應該比較好
03/26 15:27, 8F

03/26 15:28, , 9F
試作看看好了
03/26 15:28, 9F
文章代碼(AID): #1BgC_sLc (C_Sharp)
文章代碼(AID): #1BgC_sLc (C_Sharp)