Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //rimuovi caratteri duplicati all'interno di una stringa
- void remove_duplicates(char *str){
- int tail=1;//coda
- int i,j;
- if(str==NULL)
- return; //se e' un puntatore nullo allora termina
- char *tmp=str;//tmp punta alla prima cella della stringa
- while(*tmp){
- tmp++; //finche tmp non trova il carattere di terminazione
- //fallo scorrere in avanti
- }
- //ora mi calcolo la lunghezza della stringa, facendo la differenza
- //tra il puntatore che punta all'ultimo carattere e il nome della stringa
- //che di suo rappresenta il primo elemento della stringa, cioe rappresenta il puntatore
- //al primo carattere (stiamo parlando del nome della stringa)
- int len=tmp-str;//ottenuto la lunghezza
- if(len<2)//se la lunghezza e' minore di due allora, la nostra stringa
- //ha solo un carattere e e' impossibile che ci siano elementi ripetuti,
- //quindi termina
- return;
- //altrimenti
- for(i=1;i<len;i++){
- for(j=0;j<tail;j++){
- if(str[i]==str[j]){//ho trovato l'elemento uguale
- //nell'intervallo che va da j a tail
- break;//allora non fare niente
- }
- }
- //dopo il break arrivero' qui
- //se j==tail vuol dire che non ho trovato elementi uguali all'elemento
- //puntato dall'indice i all'interno del mio intervallo
- if(j==tail){//se e' cosi
- str[tail]=str[i];//allora copialo nella mia stringa
- tail++;//aumento l'intervallo , e preparo la posizione
- //per il prossimo numero da scrivere
- }
- }
- str[tail]='\0';
- }
Advertisement
Add Comment
Please, Sign In to add comment