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 程式語言中實現程式來檢查字串是否為迴文的方法。

更新於: 2022-12-15

827 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告