[語法] 想問一下把字元放到陣列裡面的問題

看板C_and_CPP作者 (超人一號)時間15年前 (2010/06/06 23:18), 編輯推噓4(407)
留言11則, 7人參與, 最新討論串1/1
各位大大好,突然遇到一個似乎是很基本的問題,但程式碼太複雜 我把基本的想法 列出來討論 假設有個已存在的字元陣列 叫做 char ch[]={'a','b','c','d','a','b'} 我現在想要宣告一個字元陣列叫做 mych[10] 想要 把 ch 中的元素丟進mych中 不重覆 正確的結果是 mych[10]= {'a','b','c','d'} 我剛剛試了 用 迴圈 去判斷 if( mych[0→10]!=ch[n] ) 但似乎都會有true的時候 感覺我有點鬼打牆了 請問一下這該怎麼做 感恩喔 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.45.186 ※ 編輯: monkeyting 來自: 60.198.45.186 (06/06 23:19)

06/06 23:25, , 1F
用一個陣列count['a'~'z']記數,記完後把非零元素的index
06/06 23:25, 1F

06/06 23:26, , 2F
一個一個放進mych[]就完成了。不知道有沒有小於O(n)的做法
06/06 23:26, 2F

06/06 23:43, , 3F
呵呵 我後來也是想用樓上大大的方法也在google更快解法
06/06 23:43, 3F

06/06 23:48, , 4F
由於 ch 必然得全部看過一遍 所以 O(n) 是必須的
06/06 23:48, 4F

06/06 23:51, , 5F
也可以檢查isadd[],看有沒有丟進mych[]了,沒有再扔進去
06/06 23:51, 5F

06/06 23:51, , 6F
這樣第二次就不用再掃isadd[]或count[],會比一樓快一些:P
06/06 23:51, 6F

06/06 23:56, , 7F
直覺想到用 unique_copy, 這樣也不用自己寫程式檢查了
06/06 23:56, 7F

06/07 06:09, , 8F
邊讀邊製表+查表已經是最快的方法了吧。
06/07 06:09, 8F

06/07 06:55, , 9F
懶得想的話也可以用 std::map
06/07 06:55, 9F

06/07 09:53, , 10F
其實只有 'a'~'z' 倒不必用到 std::map 啦....
06/07 09:53, 10F

06/08 01:24, , 11F
std::set QQ
06/08 01:24, 11F
文章代碼(AID): #1C2xn5ax (C_and_CPP)