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 :)

 Akzeptierte Antwort

Voss
Voss am 12 Feb. 2022

0 Stimmen

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 Kommentare

Lex Luthor
Lex Luthor am 12 Feb. 2022
Looks great! better then what I had..
Thank you!
Voss
Voss am 12 Feb. 2022
Excellent!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Stephen23
Stephen23 am 13 Feb. 2022

1 Stimme

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'}

Kategorien

Gefragt:

am 12 Feb. 2022

Beantwortet:

am 13 Feb. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by