文字列を並べ替えると、通常は次のようになります。
':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy
はい、それがソートされた最初の文でした。
あなたが見ることができるように、繰り返される文字が多い、aa
、eee
、ttttt
、9つのスペースなど。
128
最初の複製のASCII値256
、2番目、384
3番目などにASCII値を追加し、再度並べ替えて新しい文字列(同じ文字を取得するためのモジュラス128)を出力すると、文字列が取得されます。
':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt
(単一の先頭スペースと4つの末尾スペースに注意してください)。
文字列は"順ソート"され<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(),()()()()
{'S', 'g', 'i', 'n', 'r', 't'}
、Pythonで出力することはできません"String"
。「通常の」方法はであるためです。
{'a','b'}
に各文字に文字を追加できるため、Matlabでは受け入れられません{'aa','b'}
。入力と出力は同じ形式である必要があります。