2013-05-22 32 views
-1

我剛從haskell開始,我想知道是否有簡單的方法來匹配2個字符串之間的字母並輸出它們。在haskell中匹配2個字符串中的字母

,如:

冰,喜歡將返回I,E,d

謝謝!

+1

請更仔細你的意思「指定什麼比賽」。字母的順序是否包括在內?如果有倍數呢?從迄今爲止提供的信息來看,這可以是從簡單集合交集到[最長公共子序列](https://en.wikipedia.org/wiki/Longest_common_subsequence)問題的任何信息。 – hammar

+0

我的意思是字符串中的匹配字母就像我給出的例子。 如果你用粗體字和冷字體表示,返回字符串將是o,l,d,因爲兩個字符串都使用這3個字母 – Sevo

+1

那麼'dloc'和'bold'怎麼辦?或者'boooold'和'coold'? – hammar

回答

5

使用Data.Set.intersection

import qualified Data.Set as S 

sharedLetters str1 str2 = S.toList $ S.intersection (S.fromList str1) (S.fromList str2) 

編輯:由於@jozefg指出的那樣,在Data.List一個函數,它不相同的列表:

> import Data.List (intersect) 
> intersect "liked" "iced" 
"ied" 
+0

也許是值得一提的列表等同,因爲運算是一個新的Haskell和可能不knwo約套 – jozefg

+0

哈哈即時試圖讓它工作,只得到了錯誤輸出這樣的: 進口Data.List模塊(交叉) 主要=做 \t putStrLn「Woord1:」; a < - readLn \t putStrLn「Woord2:」; b < - readLn \t \t putStrLn intersect((讀取a)(讀取b)) – Sevo

+0

hmm也許很難像這樣讀取代碼? – Sevo

相關問題