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

 Réponse acceptée

Voss
Voss le 12 Fév 2022

0 votes

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 commentaires

Lex Luthor
Lex Luthor le 12 Fév 2022
Looks great! better then what I had..
Thank you!
Voss
Voss le 12 Fév 2022
Excellent!

Connectez-vous pour commenter.

Plus de réponses (1)

Stephen23
Stephen23 le 13 Fév 2022
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'}

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by