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 协议》,转载必须注明作者和本文链接
关于 LearnKu