Skip to content

Commit

Permalink
Swift 3
Browse files Browse the repository at this point in the history
  • Loading branch information
mrkbxt committed Aug 26, 2016
1 parent 83fbcc3 commit 96f58f7
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 21 deletions.
22 changes: 11 additions & 11 deletions Palindromes/Palindromes.playground/Contents.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Cocoa

public func palindromeCheck (text: String?) -> Bool {
if let text = text {
let mutableText = text.stringByTrimmingCharactersInSet(.whitespaceCharacterSet()).lowercaseString
let mutableText = text.trimmingCharacters(in: NSCharacterSet.whitespaces())
let length: Int = mutableText.characters.count

guard length >= 1 else {
Expand All @@ -11,26 +11,26 @@ public func palindromeCheck (text: String?) -> Bool {

if length == 1 {
return true
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.endIndex.predecessor()] {
let range = Range<String.Index>(mutableText.startIndex.successor()..<mutableText.endIndex.predecessor())
return palindromeCheck(mutableText.substringWithRange(range))
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.index(mutableText.endIndex, offsetBy: -1)] {
let range = Range<String.Index>(mutableText.index(mutableText.startIndex, offsetBy: 1)..<mutableText.index(mutableText.endIndex, offsetBy: -1))
return palindromeCheck(text: mutableText.substring(with: range))
}
}

return false
}

// Test to check that non-palindromes are handled correctly:
palindromeCheck("owls")
palindromeCheck(text: "owls")

// Test to check that palindromes are accurately found (regardless of case and whitespace:
palindromeCheck("lol")
palindromeCheck("race car")
palindromeCheck("Race fast Safe car")
palindromeCheck(text: "lol")
palindromeCheck(text: "race car")
palindromeCheck(text: "Race fast Safe car")

// Test to check that palindromes are found regardless of case:
palindromeCheck("HelloLLEH")
palindromeCheck(text: "HelloLLEH")

// Test that nil and empty Strings return false:
palindromeCheck("")
palindromeCheck(nil)
palindromeCheck(text: "")
palindromeCheck(text: nil)
8 changes: 4 additions & 4 deletions Palindromes/Palindromes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Cocoa

public func palindromeCheck (text: String?) -> Bool {
if let text = text {
let mutableText = text.stringByTrimmingCharactersInSet(.whitespaceCharacterSet()).lowercaseString
let mutableText = text.trimmingCharacters(in: NSCharacterSet.whitespaces())
let length: Int = mutableText.characters.count

guard length >= 1 else {
Expand All @@ -11,9 +11,9 @@ public func palindromeCheck (text: String?) -> Bool {

if length == 1 {
return true
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.endIndex.predecessor()] {
let range = Range<String.Index>(mutableText.startIndex.successor()..<mutableText.endIndex.predecessor())
return palindromeCheck(mutableText.substringWithRange(range))
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.index(mutableText.endIndex, offsetBy: -1)] {
let range = Range<String.Index>(mutableText.index(mutableText.startIndex, offsetBy: 1)..<mutableText.index(mutableText.endIndex, offsetBy: -1))
return palindromeCheck(text: mutableText.substring(with: range))
}
}

Expand Down
12 changes: 6 additions & 6 deletions Palindromes/README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,18 @@ Here is a recursive implementation of this in Swift:
```swift
func palindromeCheck (text: String?) -> Bool {
if let text = text {
let mutableText = text.stringByTrimmingCharactersInSet(.whitespaceCharacterSet()).lowercaseString
let mutableText = text.trimmingCharacters(in: NSCharacterSet.whitespaces())
let length: Int = mutableText.characters.count

guard length >= 1 {
guard length >= 1 else {
return false
}

if length == 1 {
return true
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.endIndex.predecessor()] {
let range = Range<String.Index>(mutableText.startIndex.successor()..<mutableText.endIndex.predecessor())
return palindromeCheck(mutableText.substringWithRange(range))
} else if mutableText[mutableText.startIndex] == mutableText[mutableText.index(mutableText.endIndex, offsetBy: -1)] {
let range = Range<String.Index>(mutableText.index(mutableText.startIndex, offsetBy: 1)..<mutableText.index(mutableText.endIndex, offsetBy: -1))
return palindromeCheck(text: mutableText.substring(with: range))
}
}

Expand All @@ -51,7 +51,7 @@ func palindromeCheck (text: String?) -> Bool {
This code can be tested in a playground using the following:

```swift
palindromeCheck("Race car")
palindromeCheck(text: "Race car")
```

Since the phrase "Race car" is a palindrome, this will return true.
Expand Down

0 comments on commit 96f58f7

Please sign in to comment.