Advertisement
Guest User

Untitled

a guest
Apr 1st, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.42 KB | None | 0 0
  1. struct Solution {
  2.     private var stack = [Character]()
  3.     private var queue = [Character]()
  4.     private let letters = Set<Character>("qwertyuiopasdfghjklzxcvbnm".characters)
  5.     private enum SolutionErrors: Error {
  6.         case invalidChar(String)
  7.         case isEmpty(String)
  8.     }
  9.    
  10.     mutating func pushCharacter(c: Character) throws {
  11.         guard letters.contains(c) else {
  12.             throw SolutionErrors.invalidChar("This data structure accepts only letters")
  13.         }
  14.         self.stack.insert(c, at: self.stack.endIndex)  
  15.     }
  16.    
  17.     mutating func enqueueCharacter(c: Character) throws {
  18.         guard letters.contains(c) else {
  19.             throw SolutionErrors.invalidChar("This data structure accepts only letters")
  20.         }
  21.         self.queue.insert(c, at: self.queue.endIndex)
  22.     }
  23.    
  24.     mutating func popCharacter() throws->Character {
  25.         if self.stack.isEmpty {
  26.             throw SolutionErrors.isEmpty("This data structure is empty")    
  27.         }
  28.         else {
  29.             if let lastChar = self.stack.popLast() {
  30.             return lastChar
  31.             }
  32.         }
  33.     }
  34.    
  35.     mutating func dequeueCharacter() throws->Character {
  36.         if self.queue.isEmpty {
  37.             throw SolutionErrors.isEmpty("This data structure is empty")
  38.         }
  39.         else {
  40.             let firstChar = self.queue.remove(at: 0)
  41.             return firstChar
  42.         }
  43.     }
  44.      
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement