回文排列:一道简单到不能再简单,却暴露你算法思维是否扎实的题
先说一句可能有点“刺耳”的话:
回文排列这道题,考的真不是你会不会写代码,
而是你能不能一眼抓住问题的“结构本质”。
我见过太多人,一看到“排列”两个字,
条件反射就开始:
- DFS
- 回溯
- 全排列
- 剪枝
然后写到一半,发现超时、复杂、还容易错。
但实际上,这道题压根不需要生成任何排列。
一、问题到底在问什么?先别急着写代码
我们先把题目“翻译成人话”。
给定一个字符串,问:
能不能重新排列字符,使它成为一个回文串?
注意关键词只有一个:
👉能不能(Yes / No)
不是让你列出所有回文排列,
也不是让你构造一个,
只是问存不存在。
这一步,如果你没意识到,后面基本就会走歪。
二、回文串的“结构真相”,你真的想过吗?
我们先不谈代码,先谈回文串本身的规律。