Advertisement
AZJIO

Удаление дубликатов символов

Apr 30th, 2013
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.07 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int stripDupes(char* s); // объявляем прототип функцию
  4.  
  5. main()
  6. {
  7.     char ch[]="psssrossgrsasssssms";
  8.  
  9.     stripDupes(ch);
  10.     puts(ch);
  11. }
  12.  
  13. int stripDupes(char* s)
  14. {
  15.     int i, k=0;
  16.  
  17.     for(i = 1; s[i] != '\0'; ++i) // Поиск от 0 до конца строки \0
  18.     {
  19.         if (s[i] == s[i-1]) // Поиск первого повтора
  20.         {
  21.             k = i; // Сохраняет индекс найденного повтора
  22.             break; // Выпрыгивает из цикла
  23.         }
  24.     }
  25.     if(k==0) // если нет повтора, то
  26.         return 0; // вылет из функции с 0
  27.  
  28.     int j = k - 1;
  29.     for(i = k; s[i] != '\0'; ++i) // Копирование символов от первого повтора до конца строки \0
  30.     {
  31.         if (s[j] != s[i]) // если символ не равен предыдущему, то копируем его
  32.             j++;
  33.             s[j] = s[i];
  34.     }
  35.     s[j+1] = '\0'; // Дописываем конец строки
  36.     return j;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement