给定一个长度为 n 的字符串,请你重新排列这个字符串,使其每个相邻的字符都不同。
你可以返回任意一个合法的结果,如果没有合法结果请返回空字符串
数据范围:字符串长度满足 ,字符串中仅包含小写英文字母
"abcdd"
"adbcd"
"nowcoder"
"nowcoder"
本身就是合法字符串,无需再排,但返回重排的字符串也是正确的
"aaab"
""
package main import "strings" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return string字符串 */ func rearrangestring( str string ) string { cnt:=map[byte]int{} max:=0 var tar byte for _,ch:=range []byte(str){ cnt[ch]++ if cnt[ch]>max{ max=cnt[ch] tar=ch } } if len(str)-max<max-1{ return "" } ans:=make([]string,max) for i,_:=range ans{ ans[i]=string(tar) } delete(cnt,tar) add:="" for k,v:=range cnt{ add+=strings.Repeat(string(k), v) } for len(add)>0{ for i:=0;i<max;i++{ if len(add)==0{ break } ans[i]+=string(add[0]) add=add[1:] } } return strings.Join(ans,"") }