跳到主内容
UniKit

回文检测

检测字符串或句子是否为回文:可忽略大小写、空白、标点与变音符号,输出规范化文本、逐对比较位置、最长回文子串与最长回文子序列长度,中文、数字与 emoji 同样适用。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

待检测文本

判断基于规范化后的文本;长度与下标都按 Unicode 码点计算,emoji 不会被拆成两半。

规范化规则

2000 max

检测结果

输入文本后自动开始检测。

这个工具能做什么

  • 校验一句「看起来像回文」的话:先去掉空格和标点再看首尾是否对称,避免手工逐字比对出错。
  • 练习或教学最长回文子串:输入 babad 能看到最长回文子串是 bab,再对照动态规划求出的最长回文子序列长度。
  • 检查中文回文(上海自来水来自海上)与含 emoji 的字符串,确认工具按 Unicode 码点处理而不是按字节。
  • 排查数据里的对称串:编号、序列号、校验码设计成回文时用来快速验证。

示例

输入

A man, a plan, a canal: Panama

输出

是回文 · 规范化文本 amanaplanacanalpanama · 码点长度 21 · 最长回文子串 amanaplanacanalpanama · 最长回文子序列长度 21

默认忽略大小写、空白与标点,所以这句英文的逗号、冒号和空格都不参与比较。

常见问题

忽略标点会不会把 emoji 也删掉?

不会。标点只删 Unicode 的 P 类(p{P},逗号、句号、括号等),emoji 属于 S 类(p{S}),仍然参与比较。所以 😀ab😀 会被判定为回文,而 😀ab 不是。

变音符号是怎么处理的?

勾选后先做 Unicode NFD 分解,再删除组合标记,于是 café 变成 cafe、über 变成 uber。默认不开启,因为「忽略变音符号」会把法语、德语里本来有区别的字母当成同一个。

中文和数字也能检测吗?

可以。判断按 Unicode 码点逐个比较,中文、数字、假名、emoji 都一样;像「上海自来水来自海上」「12321」都会判为回文。全角空格算空白,勾选「忽略空白」后会被去掉。

为什么超长文本会报错?

最长回文子序列用的是 O(n²) 动态规划,最长回文子串是 O(n²) 中心扩展,长度上万时浏览器会明显卡顿。所以单次分析限制在 2000 个码点以内,超出直接提示而不是假装在算。

空文本算回文吗?

算。规范化后没有字符时,逐对比较列表为空、不匹配对数为 0,工具会判为回文并给出提示,避免把「只输入了标点」误读成错误。

关键词:palindromepalindrome checker回文检测回文串longest palindrome最长回文子串palindrome test镜像字符串中文回文emoji 回文

同类工具