Leetcode每日一题 —— 3517. 最小回文排列 I

转载自:linux.do/t/topic/2664074

Leetcode每日一题 —— 3517. 最小回文排列 I
leetcode.cn/problems/smallest-pali...

思路

今天实质还是个简单题,统计回文字母次数,然后正序反序各打印一次,如果位数是奇数把中间额外的一个字符插入。

代码

class Solution {
    public String smallestPalindrome(String s) {
        int[] cnt = new int[26];
        int n = s.length();
        int half = n / 2;
        for (int i = 0; i < half; i++) {
            cnt[s.charAt(i) - 'a']++;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 26; i++) {
            sb.repeat(String.valueOf((char) ('a' + i)), cnt[i]);
        }
        String insert = half * 2 < n ? String.valueOf(s.charAt(n / 2)) : "";
        return sb + insert + sb.reverse();
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
258
粉丝
18
喜欢
115
收藏
64
排名:237
访问:4.0 万
私信
所有博文
社区赞助商