piapia123
zh

回文判断与构造

文本

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

「A man, a plan, a canal: Panama」是回文,但要先忽略大小写、标点与空格;「上海自来水来自海上」一眼就是。所以三个「忽略」都做成开关,而不是替用户默认掉其中一个 —— 默认全开,对应人读一句话的直觉。 判定按码点而不是 UTF-16 码元,所以 emoji 与组合字符不会被拆坏。不是回文时,可以按两个方向补成回文:`abc` 往后补成 `abcba`(找最长回文后缀),往前补成 `cbabc`(找最长回文前缀),补出来的都是最短的。需要的话还能列出最长回文子串。 所有计算都在你的浏览器里完成,不联网、不上传、不记录。

功能

  • 一行一个词或句子,逐行给出「是 / 不是回文」的结论
  • 可分别忽略大小写、标点(中英与全角标点都算)、空白
  • 两个方向补成回文:向后 `abc → abcba`、向前 `abc → cbabc`
  • 补全取最短方案(最长回文后缀 / 前缀)
  • 可列出最长回文子串并给出长度
  • 按码点判断,emoji 与组合字符不会被拆坏
  • 每行一段,可单独复制,也可复制全部

使用方法

  1. 把要判断的文本粘进输入框,一行一个
  2. 按需要开关「忽略大小写 / 标点 / 空白」
  3. 需要补全或最长子串就打开对应选项
  4. 结果每行一段,点行末复制按钮取走

常见问题

为什么「忽略」全部默认打开?
因为人读一句话时本来就不会在意大小写和标点 ——「A man, a plan」直觉上就是回文。想严格按字符比较时,把三个开关都关掉即可。
emoji 会不会被拆坏?
不会。判断按 Unicode 码点做,一个 emoji 算一个字符;按 UTF-16 码元比较会把代理对拆成两半,那正是这个工具要避免的。
补全为什么有两个方向?
`abc` 可以补成 `abcba` 也可以补成 `cbabc`,取决于你想让原串落在左边还是右边,所以不替用户选,两个都给。算法取最短补全。
数据会上传吗?
不会。全部在浏览器内存里计算,不发送任何请求,断网也能用。

相关工具