2697. 字典序最小回文串 --力扣 --JAVA

发布时间:2023年12月18日

题目

给你一个由?小写英文字母?组成的字符串?s?,你可以对其执行一些操作。在一步操作中,你可以用其他小写英文字母?替换??s?中的一个字符。

请你执行?尽可能少的操作?,使?s?变成一个?回文串?。如果执行?最少?操作次数的方案不止一种,则只需选取?字典序最小?的方案。

对于两个长度相同的字符串?a?和?b?,在?a?和?b?出现不同的第一个位置,如果该位置上?a?中对应字母比?b?中对应字母在字母表中出现顺序更早,则认为?a?的字典序比?b?的字典序要小。

返回最终的回文字符串。

解题思路

  1. 将字符串转换成字符数组;
  2. 遍历字符数组,首位对称字符对比;
  3. 若不相同则将较小的字符赋值给较大的字符;

代码展示

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);
    }
}

文章来源:https://blog.csdn.net/qq_45794129/article/details/134984666
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。