Haskell程序检查回文


本教程将帮助我们使用 Haskell 中的用户自定义函数和布尔函数来检查任何数字是否为回文数。回文数是指其数字反转后仍保持不变的数字。以下示例将使您清楚地了解回文数。

例如,121、12321 和 1221 是回文数,而 123、1234 和 1212 不是。

算法

  • 步骤 1 − 使用反转函数定义 isPalindrome 函数,isPalindrome str = str == reverse str。

  • 步骤 2 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它被写成 main = do。在 main 函数中,传递一个字符串,然后将其传递给 isPalindrome 函数。函数的结果用于打印消息,指示字符串是否为回文。

  • 步骤 3 − 变量名为“str”,它将保存要检查的字符串,判断其是否为回文数。

  • 步骤 4 − 调用函数后,使用 ‘putStrLn’ 语句将结果打印到控制台。

示例 1

在这个示例中,isPalindrome 函数接受一个字符串作为输入,如果字符串是回文(即正反读相同),则返回 True,否则返回 False。该函数使用 reverse 函数反转输入字符串,并将其与原始字符串进行比较。如果它们相等,则该字符串是回文,否则不是。

Open Compiler
isPalindrome :: String -> Bool isPalindrome str = str == reverse str main :: IO () main = do let str = "1331" if isPalindrome str then putStrLn "The string is a palindrome." else putStrLn "The string is not a palindrome."

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

The string is a palindrome.

示例 2

在这个示例中,isPalindrome 函数检查输入字符串是否为空或仅包含单个字符,如果是,则返回 True,因为此类字符串根据定义是回文。如果输入字符串较长,则检查第一个和最后一个字符是否相等,如果是,则递归调用 isPalindrome 函数处理其余字符串(不包括第一个和最后一个字符)。如果这两个条件都满足,则输入字符串是回文,函数返回 True。否则,它返回 False。

Open Compiler
isPalindrome :: String -> Bool isPalindrome [] = True isPalindrome [_] = True isPalindrome (x:xs) = (x == last xs) && isPalindrome (init xs) main :: IO () main = do let str = "1331" if isPalindrome str then putStrLn "The string is a palindrome." else putStrLn "The string is not a palindrome."

输出

The string is a palindrome.

示例 3

在这个示例中,isPalindrome 函数使用列表推导式创建一个从输入字符串的开头和结尾创建的对应字符对列表。然后使用 all 函数检查所有这些对是否相等。如果所有对都相等,则输入字符串是回文,函数返回 True。否则,它返回 False。

Open Compiler
isPalindrome :: String -> Bool isPalindrome str = all (\(x,y) -> x == y) [(str !! i, str !! (len-i-1)) | i <- [0..(len `div` 2)]] where len = length str main :: IO () main = do let str = "1331" if isPalindrome str then putStrLn "The string is a palindrome." else putStrLn "The string is not a palindrome."

输出

The string is a palindrome.

结论

在 Haskell 中,我们可以使用带反转函数、列表推导式或递归的用户自定义函数来检查数字是否为回文。

更新于:2023年4月24日

817 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告