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

 Respuesta aceptada

Voss
Voss el 12 de Feb. de 2022
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 comentarios

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

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 13 de Feb. de 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'}

Categorías

Preguntada:

el 12 de Feb. de 2022

Respondida:

el 13 de Feb. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by