题目
给你一个由 小写英文字母 组成的字符串
s
,你可以对其执行一些操作。在一步操作中,你可以用其他小写英文字母 替换s
中的一个字符。请你执行 尽可能少的操作 ,使
s
变成一个 回文串 。如果执行 最少 操作次数的方案不止一种,则只需选取 字典序最小 的方案。对于两个长度相同的字符串
a
和b
,在a
和b
出现不同的第一个位置,如果该位置上a
中对应字母比b
中对应字母在字母表中出现顺序更早,则认为a
的字典序比b
的字典序要小。返回最终的回文字符串。
解题思路
- 将字符串转换成字符数组;
- 遍历字符数组,首位对称字符对比;
- 若不相同则将较小的字符赋值给较大的字符;
代码展示
class Solution { public String makeSmallestPalindrome(String s) { char[] chars = s.toCharArray(); int n = chars.length; for (int i = 0; i < n / 2; i++){ if(chars[i] != chars[n - 1 - i]){ if(chars[i] > chars[n - 1 - i]){ chars[i] = chars[n - 1 - i]; } else { chars[n - 1 - i] = chars[i]; } } } return new String(chars); } }