I'm trying to sort a string of letters into repetition of each letter.
for example:
Text= 'KKKKLLOOKkl';
Result should be {'4K','2L','2O','1K,'1k','1l'}
  1. Text could be any length.
  2. Text could be only alphabet letters (capital and small).
  3. Result could be any type of array (vector/ table/ cell ect).
I used 'unique' to get which letters are inside Text but how do I count the repetition for each occurence?
Is there a fast way or a function instead of looping for each result of unique?
Text = 'KKKKLLOOKkl';
[C,~,Xz] = unique(Text,'stable')
C = 'KLOkl'
Xz = 1,1,1,1,2,2,3,3,1,4,5
Thanks for any help :)

 채택된 답변

Voss
Voss 2022년 2월 12일

0 개 추천

Text = 'KKKKLLOOKkl';
[C,~,Xz] = unique(Text,'stable');
idx = [true; diff(Xz) ~= 0];
strcat(sprintfc('%d',diff([find(idx); numel(Text)+1])),C(Xz(idx)).').'
ans = 1×6 cell array
{'4K'} {'2L'} {'2O'} {'1K'} {'1k'} {'1l'}

댓글 수: 2

Lex Luthor
Lex Luthor 2022년 2월 12일
Looks great! better then what I had..
Thank you!
Voss
Voss 2022년 2월 12일
Excellent!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Stephen23
Stephen23 2022년 2월 13일

1 개 추천

T = 'KKKKLLOOKkl';
D = [true,diff(T)~=0];
L = diff(find([D,true]));
C = compose('%s%d',T(D).',L(:))
C = 6×1 cell array
{'K4'} {'L2'} {'O2'} {'K1'} {'k1'} {'l1'}

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

질문:

2022년 2월 12일

답변:

2022년 2월 13일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by