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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告