【发布时间】:2018-02-08 03:03:19
【问题描述】:
import Data.List
data Encoding = Multiple Int Char | Single Char deriving (Eq,Show,Ord)
行程编码
encode :: String -> [Encoding]
encode inputString =encoding (group inputString) []
encoding :: [String] -> [Encoding] -> [Encoding]
encoding groupString xs=
if (length groupString == 0)
then xs
else
case (head groupString) of
([c]) ->encoding (tail groupString) (xs ++ [Single c])
(x) -> encoding (tail groupString) (xs ++ [Multiple (length x) (head x)])
运行长度解码
decode :: [Encoding] -> String
decode listString = decoding listString []
decoding :: [Encoding] -> String -> String
decoding inputString xs=
if (length inputString == 0)
then xs
else
case (head inputString) of
(Single x) ->decoding (tail inputString) (xs++ [x])
(Multiple num x) ->decoding (tail inputString) (xs ++ (replicate num x) )
这是我的运行长度编码解决方案,谁能建议我编写编码和解码函数的更好方法
【问题讨论】:
标签: haskell