检查是否可以形成回文

时间:2015-03-02 13:56:17

标签: algorithm

给定一个字符串S我们怎样才能检查天气,我们只需更换一个字母即可将其转换为回文。请帮助快速解决方案。

示例:让我们有S =" mixem"。然后答案是肯定的,因为我们可以改变" e"到"我"使它成为回文。

长度的字符串最多可以是1000

2 个答案:

答案 0 :(得分:0)

假设基于0的索引,只需检查每个0 <= i < your_string_lengthiyour_string_length - i - 1位置的字符数最多为2的位置数是否足够如果是,那么答案也是肯定的,否则就不是。

基本上,这会检查与字符串两边距离相等的字符对的数量是不同的:如果只有一个这样的字符对不同,那么我们可以更改其中一个字符并使其相等。如果有更多对,那么我们需要更改更多字符。

答案 1 :(得分:0)

如果我理解你的例子,这意味着你可以将一个字母改为任何其他字母。这使得algorythm令人尴尬地简单。您需要将单词从两侧解析到中心并计算错误的数量。如果它是&lt; = 1那么你可以转换成回文1改变或它已经是回文。

var s = "mixen", errors = 0;
for(var i = 0; i < s.length/2; i++){
 if(s[i] != s[s.length-1-i]){
  errors++;
 }
var isPalindrom = errors == 0;
var isPalindromConvertible = errors <= 1;

PS。你没有指定语言,所以我现在写的对我来说最方便:javascript