如何搭建服务器做网站,做网站时需要注意什么,怎样做淘宝推广网站,html网页设计步骤767. 重构字符串
给定一个字符串S#xff0c;检查是否能重新排布其中的字母#xff0c;使得两相邻的字符不同。
若可行#xff0c;输出任意可行的结果。若不可行#xff0c;返回空字符串。
示例 1:
输入: S “aab” 输出: “aba” 示例 2:
输入: S “aaab” 输出: “…767. 重构字符串
给定一个字符串S检查是否能重新排布其中的字母使得两相邻的字符不同。
若可行输出任意可行的结果。若不可行返回空字符串。
示例 1:
输入: S “aab” 输出: “aba” 示例 2:
输入: S “aaab” 输出: “” 注意:
S 只包含小写字母并且长度在[1, 500]区间内。
解题思路
根据相邻字符串的特征我们可以推出如果某个字母出现的次数大于整个字符串长度的一半的话那么无论如何我们都不能避免相邻的重复字符串。
因此我们可以先判断出现次数最多的字符串的长度将出现次数最多的字符串填充至偶数下标中如果不能填满偶数下标则让其他字符串来凑总之就是先填满偶数下标的再填奇数下标的
代码
class Solution {public String reorganizeString(String s) {int ns.length();int[] cntnew int[26];int max0;for(int i0;is.length();i){cnt[s.charAt(i)-a];}for(int i0;i26;i){if(cnt[i]cnt[max])maxi;}int half(int)Math.ceil((double)n/2.0);if(cnt[max]half)return ; char[] curnew char[n];int idx0;for(;idxncnt[max]--0;idx2)cur[idx](char)(maxa);StringBuilder sbnew StringBuilder();for(int i0;i26;i){for(int j0;jcnt[i];j,idx2){if(idxn)idx1;cur[idx](char)(ia);} }return new String(cur);}}