C++ 回文排列和排列有什么区别?

C++ 回文排列和排列有什么区别?,c++,string,algorithm,C++,String,Algorithm,我见过一些编码问题,用来检查一个字符串是否是回文的排列,有时用来检查一个字符串是否是另一个字符串的排列。我不知道这两者有什么区别。如果字符串是回文的排列,则两个字符串都需要具有相同的长度,并且两个字符串中每个字符的计数应该相同。对于排列后的字符串,也可以使用相同的标准。从算法的角度来看,回文排列和排列之间有什么内在的区别吗?这两个问题通常根据它们的结构不同而不同。通常,字符串排列问题的提问方式如下: 给定一个字符串w和一个字符串x,检查w是否是x的置换 从这个意义上讲,您知道两个字符串是什么,您

我见过一些编码问题,用来检查一个字符串是否是回文的排列,有时用来检查一个字符串是否是另一个字符串的排列。我不知道这两者有什么区别。如果字符串是回文的排列,则两个字符串都需要具有相同的长度,并且两个字符串中每个字符的计数应该相同。对于排列后的字符串,也可以使用相同的标准。从算法的角度来看,回文排列和排列之间有什么内在的区别吗?

这两个问题通常根据它们的结构不同而不同。通常,字符串排列问题的提问方式如下:

给定一个字符串w和一个字符串x,检查w是否是x的置换

从这个意义上讲,您知道两个字符串是什么,您只需要查看字符计数是否匹配(或者它们是否具有相同的排序顺序,等等)

回文排列问题通常被问为

给定一个字符串w,确定是否存在一个字符串x,其中x是回文,w是x的置换

所以在这个例子中,你只需要得到一个字符串w,需要弄清楚是否有一个回文,它是一个排列。这个问题是不同的,因为您没有显式的目标字符串进行比较,您需要有创造性的洞察力来计算每个字符的计数,以查看是否有零个或一个字符出现奇数次


如果你把“w是某个字符串的排列吗?”重新定义为“w是某个字符串的排列吗?”的话,“w是某个回文的排列吗?”的一般问题就不再有趣了,因为答案是直接的“是”,如果你把“w是某个回文的排列吗?”重新定义为“w是某个回文x的排列吗?”的话,“w是某个回文的排列吗?”因为它本质上与一般置换问题相同。

是的,你是对的。我忽略了一个事实,即不是回文的字符串可以有排列。谢谢