문자열을 정렬하면 일반적으로 다음과 같은 결과가 나타납니다.
':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy
네, 첫 번째 문장이 정렬되었습니다.
당신이 볼 수 있듯이, 반복되는 문자의 많은이 있습니다, aa
, eee
, ttttt
, 9 개 공간 등등.
128
첫 번째 복제본, 256
두 번째, 384
세 번째 등 의 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'}
"정상적인"방법은이므로 파이썬에서는 출력 할 수 없습니다 "String"
.
{'a','b'}
과 같이 각 문자에 문자를 추가 할 수 있으므로 Matlab에서는 허용되지 않습니다 {'aa','b'}
. 입력 및 출력 형식이 동일해야합니다.