1328. 破坏回文串

小豆丁 1年前 ⋅ 1076 阅读
1328. 破坏回文串
给你一个回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的字典序最小,且 不是 回文串。

请你返回结果字符串。如果无法做到,则返回一个空串。

 

示例 1:

输入:palindrome = "abccba"
输出:"aaccba"
示例 2:

输入:palindrome = "a"
输出:""

解析

我们就找第一个不是a 的,然后替换成a ,但是奇数位那种就不行,因为中间字符变了依旧是回文串。

另外如果循环一遍全是a ,那就把最后一个字符变为b即可

class Solution {
    public String breakPalindrome(String palindrome) {
        char[] vals = palindrome.toCharArray();
        if(vals.length==1) return "";
        //找到第一个不是a的换成a,中间的不行
        int len = vals.length;
        boolean alla = true;
        for(int i = 0 ;i < len;i++){
            if(vals[i]!='a'){
                alla = false;
                if(len%2==1 && i==(len/2)) continue;
                vals[i] = 'a';
                return new String(vals);
            }
        }
        vals[len-1]='b';
        return new String(vals);
    }
}