Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Solution {
- private var stack = [Character]()
- private var queue = [Character]()
- private let letters = Set<Character>("qwertyuiopasdfghjklzxcvbnm".characters)
- private enum SolutionErrors: Error {
- case invalidChar(String)
- case isEmpty(String)
- }
- mutating func pushCharacter(c: Character) throws {
- guard letters.contains(c) else {
- throw SolutionErrors.invalidChar("This data structure accepts only letters")
- }
- self.stack.insert(c, at: self.stack.endIndex)
- }
- mutating func enqueueCharacter(c: Character) throws {
- guard letters.contains(c) else {
- throw SolutionErrors.invalidChar("This data structure accepts only letters")
- }
- self.queue.insert(c, at: self.queue.endIndex)
- }
- mutating func popCharacter() throws->Character {
- if self.stack.isEmpty {
- throw SolutionErrors.isEmpty("This data structure is empty")
- }
- else {
- if let lastChar = self.stack.popLast() {
- return lastChar
- }
- }
- }
- mutating func dequeueCharacter() throws->Character {
- if self.queue.isEmpty {
- throw SolutionErrors.isEmpty("This data structure is empty")
- }
- else {
- let firstChar = self.queue.remove(at: 0)
- return firstChar
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement