Advertisement
Alexxik

Untitled

Sep 14th, 2023 (edited)
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.35 KB | None | 0 0
  1. // MARK: - 5. Longest Palindromic Substring
  2. // Дана строка s, вернуть самую длинную палиндромную строку
  3.  
  4. // Проходимся по букве и разрастанием строки вправо и влево проверяем палендром она или нет
  5.  
  6. // babzzbad
  7.  
  8. func longestPalindrome(_ s: String) -> String {
  9.     let s = Array(s).map{String($0)}
  10.    
  11.     // для собеса
  12.     // var result = [String]()
  13.     var result: Array<String>.SubSequence = []
  14.     var maxLength = 0
  15.    
  16.     for i in 0..<s.count {
  17.        
  18.         // нечетные палиндромы
  19.         var l = i
  20.         var r = i
  21.        
  22.         while l >= 0 && r < s.count && s[r] == s[l] {
  23.             if r - l + 1 > maxLength {
  24.                 maxLength = r - l + 1
  25.                 result = s[l...r]
  26.             }
  27.             l -= 1
  28.             r += 1
  29.         }
  30.        
  31.         // четные палиндромы. захватываем 2 элемента и разрастаемся
  32.         l = i
  33.         r = i+1
  34.        
  35.         while l >= 0 && r < s.count && s[r] == s[l] {
  36.             if r - l + 1 > maxLength {
  37.                 maxLength = r - l + 1
  38.                 result = s[l...r]
  39.             }
  40.             l -= 1
  41.             r += 1
  42.         }
  43.     }
  44.     return result.joined()
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement