Advertisement
Alexxik

Untitled

Mar 17th, 2024 (edited)
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.10 KB | None | 0 0
  1. // Удалить смайлики вида ":-)))" и ":- ((" из сообщения
  2.  
  3. func removeSmiles(_ str: inout [Character]) {
  4.     var l = 0
  5.     var r = 0
  6.     while r < str.count {
  7.         while r + 2 < str.count
  8.                 && str[r] == ":"
  9.                 && str[r + 1] == "-"
  10.                 && (str[r + 2] == ")" || str[r + 2] == "(") {
  11.             // прыгаем к элементу после полноценного смайла (либо за пределы списка)
  12.             r += 3
  13.             // смторим сколько скобок еще есть
  14.             while r < str.count && str[r] == str[r - 1] {
  15.                 r += 1
  16.             }
  17.         }
  18.         // для провеки когда к в самом конце вышел за пределы
  19.         if r < str.count {
  20.             str[l] = str[r]
  21.             l += 1
  22.         }
  23.         r += 1
  24.     }
  25.     // <l так как на последный итерации (перезаписи) l шагает вперед
  26.     str = Array(str[0..<l])
  27. }
  28.  
  29. var a = Array("Aa :-)+(())")
  30. removeSmiles(&a)
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement