回文检查器

回文是指正读与反读结果相同的字符串。例如“Madam”很容易识别;而“A man,a plan,a canal: Panama”则需要稍加留意,因为其识别依赖于忽略标点符号和空格。该工具会自动对粘贴内容进行标准化处理(包括小写化、去除空格和标点),并验证结果是否为真正的回文,同时还会将原始字符串与其倒序版本并排显示。

回文检查的处理流程

  1. 1

    粘贴文本或数字

    一个单词、一个短语、一个长句子或一个数字字符串。

  2. 2

    已应用标准化处理

    文本被转换为小写,并移除所有非字母或数字的内容(空格、标点、符号)。每个 Unicode 字母都会原样保留,因此重音符号会被区分,非拉丁文字(包括汉字)也能正常处理。

  3. 3

    正向与反向比较

    若标准化字符串与其反向字符串相匹配,则为回文。

  4. 4

    检查结果

    该工具可显示原始字符串及经标准化处理后的反向字符串以供验证。

经典回文示例

文本 类型
madam 单个单词
level 单个单词
racecar 单个单词
A man, a plan, a canal: Panama 短语
Was it a car or a cat I saw? 问题
Never odd or even 短语
12321 编号
Mr. Owl ate my metal worm 长句
上海自来水来自海上 中文回文

回文的类别

  • 字符回文。 默认设置:字母顺序相同(正序与反序),忽略空格。
  • 单词回文。 “I did, did I”,每个单词作为一个整体镜像对称。
  • 倒置词(Semordnilaps)。 反转后形成不同单词的词语:“stressed”→“desserts”。
  • 数值回文。 任何正反方向读取结果相同的数字序列:1991、1881。
  • 基因组回文序列。 在DNA双链中某区域读取结果相同的序列(与限制性内切酶相关)。

检查编程

伪代码中的核心逻辑如下:

function isPalindrome(s):
    normalized = lowercase(s)
    normalized = removeAll(normalized, /[^\p{L}\p{N}]/u)   // 保留字母和数字,任何文字
    return normalized == reverse(normalized)

这是标准的面试热身问题。不同版本会增加特殊处理场景:忽略Unicode组合标记、处理空字符串、支持表情符号、考虑字素组合规则。

该规则的常见变体

  • 严格模式: 计数所有字符(包括空格和标点符号)。"aba"通过;"a man a plan"未通过。
  • 仅限字母数字: 移除所有其他字符。大多数非正式的回文检测均采用此设置。
  • Unicode 规范化处理: 有些检查器会在比较前合并带变音符号的字形(NFKD),使“café”与“éfac”相匹配。

本工具采用仅保留字母和数字的方式:转换为小写,保留每个 Unicode 字母和数字(任何文字,包括汉字),并移除其余内容。它合并变音符号,因此带重音的字母必须与相同的带重音字母对应才算回文。本工具没有“严格模式”开关。

常见问题

是的。任何单个字符都显然是回文,它等于其反向序列。大多数教学定义要求至少包含三个字符才具有研究价值,而数学定义则接受长度为1甚至长度为0(空字符串)的情况。

将它们视为数字序列。121、12321 和 1991 均为数值回文。对于大整数,请检查其字符串表示形式;切勿尝试通过算术方法倒序排列该数字,否则会导致首位零丢失。

在英语领域,一部重要的作品是《一个人、一个计划、一条运河:巴拿马》及其众多扩展版本,彼得·诺维格创作的计算机生成回文长达17,000余字,但均不符合语法规则。吉尼斯世界纪录收录的最长单词回文为“tattarrattat”(出自乔伊斯的《尤利西斯》)。

是的,所有语言中皆然。芬兰语中的“saippuakivikauppias”(意为“皂石销售商”,共19个字母)常被公认为任何语言中最长的自然形成的单词回文。

相关工具

此工具还提供其他语言版本