8000 Merge pull request #187 from mrkbxt/master · codee/swift-algorithm-club@025360d · GitHub
[go: up one dir, main page]

Skip to content

Commit 025360d

Browse files
authored
Merge pull request kodecocodes#187 from mrkbxt/master
migrate palindromes to Swift 3 string. Thanks @mrkbxt!
2 parents 83fbcc3 + 5f1b071 commit 025360d

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

Palindromes/Palindromes.playground/Contents.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Cocoa
22

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

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

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

2020
return false
2121
}
2222

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

2626
// Test to check that palindromes are accurately found (regardless of case and whitespace:
27-
palindromeCheck("lol")
28-
palindromeCheck("race car")
29-
palindromeCheck("Race fast Safe car")
27+
palindromeCheck(text: "lol")
28+
palindromeCheck(text: "race car")
29+
palindromeCheck(text: "Race fast Safe car")
3030

3131
// Test to check that palindromes are found regardless of case:
32-
palindromeCheck("HelloLLEH")
32+
palindromeCheck(text: "HelloLLEH")
3333

3434
// Test that nil and empty Strings return false:
35-
palindromeCheck("")
36-
palindromeCheck(nil)
35+
palindromeCheck(text: "")
36+
palindromeCheck(text: nil)

Palindromes/Palindromes.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Cocoa
22

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

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

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

Palindromes/README.markdown

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@ Here is a recursive implementation of this in Swift:
2828
```swift
2929
func palindromeCheck (text: String?) -> Bool {
3030
if let text = text {
31-
let mutableText = text.stringByTrimmingCharactersInSet(.whitespaceCharacterSet()).lowercaseString
31+
let mutableText = text.trimmingCharacters(in: NSCharacterSet.whitespaces()).lowercased()
3232
let length: Int = mutableText.characters.count
3333

34-
guard length >= 1 {
34+
guard length >= 1 else {
3535
return false
3636
}
3737

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

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

5353
```swift
54-
palindromeCheck("Race car")
54+
palindromeCheck(text: "Race car")
5555
```
5656

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

0 commit comments

Comments
 (0)
0