LeetCode
重构字符串
示例 1:
输入: S = "aab"
输出: "aba"
示例 2:
输入: S = "aaab"
输出: ""
解法:奇偶位填入
解题思路:
要使字符串的所有相邻的字符都不相等,我们可以将先将每一个字符在字符串中出现的次数找出来,用一个长度为26的数组就可以了
for(char c : S.toCharArray())
{
if(max_length < ++arr[c-'a'])
max_length = arr[c-'a'];
}
我们先将一些不可能完成的字符串直接返回
- 在字符串长度length为偶数的情况下,当一个字符在字符串中出现的次数大于
length/2
时,它没办法完成要求,直接返回"" - 在字符串长度length为奇数的情况下,当一个字符在字符串中出现的次数大于
length/2+1
时,它没办法完成要求,直接返回"",+1的原因比如说ababa,a有三个,放在奇数位即可
代码如下:
class Solution {
public String reorganizeString(String S) {
int[] chs = new int[26];