给定一个字符串S我们怎样才能检查天气,我们只需更换一个字母即可将其转换为回文。请帮助快速解决方案。
示例:让我们有S =" mixem"。然后答案是肯定的,因为我们可以改变" e"到"我"使它成为回文。
长度的字符串最多可以是1000
答案 0 :(得分:0)
假设基于0的索引,只需检查每个0 <= i < your_string_length
,i
和your_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