Haskell 程式檢查輸入字串是否為迴文
本教程討論瞭如何編寫一個程式,在 Haskell 程式語言中檢查輸入字串是否為迴文。
當一個字串在反轉後仍然與原始字串完全相同,則稱該字串為迴文。例如,字串“level”就是一個迴文,因為它即使反轉後也仍然是相同的字串。
在本教程中,我們將看到:
使用內建函式 reverse 檢查字串是否為迴文的程式。
使用遞迴函式檢查字串是否為迴文的程式。
方法 1:使用內建函式檢查字串是否為迴文
演算法
我們宣告一個函式 isPalindrome,該函式返回比較的結果,即一個布林值。
然後我們宣告主函式,其中一個變數 str 初始化為值“kayak”。函式 isPalindrome 被呼叫,並以初始化的字串 str 作為引數。函式的輸出被載入到變數 status 中。
最後,使用 if 語句檢查 status 的值,如果 status 的值為 true,則程式列印該字串是迴文,否則程式列印該字串不是迴文。
示例
-- function declaration isPalindrome :: [Char]->Bool -- function definition isPalindrome str = (str==(reverse str)) main :: IO() main = do -- initializing variable str let str = "kayak" -- invoking the function isPalindrome let status = isPalindrome str -- printing the status if (status) then print ("The string " ++ str ++ " is a Palindrome") else print ("The string " ++ str ++ " is not a Palindrome")
輸出
"The string kayak is a Palindrome"
方法 2:使用遞迴函式檢查字串是否為迴文
演算法
宣告一個函式 StringReverse,該函式返回字串引數的反轉。
宣告一個函式 isPalindrome,該函式返回比較的結果,即一個布林值。
建立主函式並初始化要檢查迴文的字串。
使用 isPalindrome 函式和 StringReverse 函式檢查兩個字串是否匹配。
列印結果。
示例
-- function declaration stringReverse :: [Char]->[Char] -- function definition -- base case stringReverse [] = [] stringReverse (ch:str) = (stringReverse str) ++ [ch] -- function declaration isPalindrome :: [Char]->Bool -- function definition isPalindrome str = (str==(stringReverse str)) main :: IO() main = do -- initializing variable str let str = "kayak" -- invoking the function isPalindrome let status = isPalindrome str -- printing the status if (status) then print ("The string " ++ str ++ " is a Palindrome") else print ("The string " ++ str ++ " is not a Palindrome")
輸出
"The string kayak is a Palindrome"
結論
在本教程中,我們討論了兩種在 Haskell 程式語言中實現程式來檢查字串是否為迴文的方法。
廣告