25
排序字符串
如果对字符串进行排序,通常会得到类似以下内容的信息: ':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy 是的,那是第一句话。 正如你所看到的,有很多重复的字符,aa,eee,ttttt,9位等。 如果我们将128第一个重复项的ASCII值相加,256将第二个重复项的ASCII值相加384,依此类推,依此类推,再次对其进行排序并输出新的字符串(取模128以返回相同的字符),我们将得到以下字符串: ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt (请注意单个前导空格和四个尾随空格)。 该字符串“依次排序” <space>':I....uy,<space>aeg....uy,<space>egi....ty,<space>iloty,<space>lt,<space>,<space>,<space>,<space>。 如果我们使用带数字的字符串,可能会更容易形象化。该字符串111222334在“排序”后将为:123412312。 挑战: 毫不奇怪,挑战在于编写根据以上描述对字符串进行排序的代码。 您可以假定输入字符串将仅包含32-126(空格到波浪号)范围内的可打印ASCII字符。 测试用例: **Test cases:** *:Tacest*es*s* If you sort a string you'll typically get something like: ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt Hello, World! !,HWdelorlol #MATLAB, 114 bytes #,14ABLMTbesty 1A f=@(s)[mod(sort(cell2mat(cellfun(@(c)c+128*(0:nnz(c)-1),mat2cell(sort(s),1,histc(s,unique(s))),'un',0))),128),'']; '()*+,-0128:;=@[]acdefhilmnoqrstuz'(),0128@acefilmnorstu'(),12celmnostu'(),12celnstu(),clnst(),cls(),cs(),()()()() 这是代码高尔夫球,因此每种语言中以字节数计的最短代码将赢得ref。