我試圖來解決HackerRank一個簡單的問題,並在標題我收到錯誤。我是一個Haskell noob,與我一起裸露。該問題要求採取一個字符串,並通過刪除相鄰的字母來減少字符串。例如「aabcdd」=>「bc」。這裏是我的代碼:Haskell字符串操作。功能錯誤中的非窮舉模式。
main :: IO()
main = do
line <- getLine
putStrLn (reduce' line)
reduce' :: String -> String
reduce' [] = []
reduce' (x0:x1:xs)
| x1:xs == [] = [x0]
| x0 == x1 = reduce' xs
| otherwise = x0 : x1 : reduce' xs
我很困惑,因爲我想我已經覆蓋的邊緣情況。我不想要問題的答案,我只想知道爲什麼我會收到錯誤。謝謝!
它已經一段時間,因爲我寫的哈斯克爾,但IIRC,你最後的情況下,將只匹配正好3個字符。如果字符串有1或2個元素,它將不匹配。 – Carcigenicate
@Carcigenicate:沒有兩個元素'xs'是列表的尾部。 –
@WillemVanOnsem哦對。所以只有1個元素。 – Carcigenicate