Scusa la sincerità, ma non hai commentato nemmeno una riga di codice!!!
Non puoi pretendere che le persone 'perdano' il loro tempo per studiarsi la tua funzione solo perchè tu non hai commentato il codice (come invece suggerito da tutti i libri di programmazione).
A parte questo, ci provo:
A mio avviso,l'obiettivo di uscita che hai indicato:
Ingresso: sNota = 0001C0001D0001A0001B0001A0001B0001A0001B0001A0001B
Uscita: CompattaStringa = 1C1D
4(1A1B)
non è 'logicamente' corretto in quanto
disomogeneo riferendoci ad un algoritmo.
La tua funzione dovrebbe utilizzare un algoritmo atto ad indicare
sempre il numero di occorrenze, cioè:
1(1C)
1(1D)
4(1A)
4(1B)
Se la guardi sotto quest'ottica, la funzione si semplifica moltissimo diventando quasi banale.
Ora, invece, tu stai 'mescolando' due variabili completamente diverse come 'struttura', e questo complica di molto l'algoritmo perchè prima di conoscere il numero di occorrenze, devi analizzare la stringa dall'inizio alla fine ogni volta, e questo lo devi fare continuamente .
In base a quanto espresso, il diagramma di flusso dell'algoritmo dovrebbe essere questo:
- inizio a scorrere la stringa
- alla prima occorrenza
creo un nuovo vettore della stessa
- alle successive occorrenze,
incremento il vettore esistente
Come vedi, è davvero semplice!
alla fine dell'analisi della stringa avrai ottenuto <x> vettori, ognuno dei quali ti darà il numero di occorrenze da cui potrai comporre il risultato finale come meglio ti aggrada.