为有牺牲多壮志,敢教日月换新天。

[Swift]LeetCode796. 旋转字符串 | Rotate String

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: https://www.cnblogs.com/strengthen/p/10547242.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

We are given two strings, A and B.

A shift on A consists of taking string A and moving the leftmost character to the rightmost position. For example, if A = 'abcde', then it will be 'bcdea' after one shift on A. Return True if and only if A can become B after some number of shifts on A.

Example 1:
Input: A = 'abcde', B = 'cdeab'
Output: true

Example 2:
Input: A = 'abcde', B = 'abced'
Output: false

Note:

  • A and B will have length at most 100.

给定两个字符串, A 和 B

A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' 。如果在若干次旋转操作之后,A 能变成B,那么返回True

示例 1:
输入: A = 'abcde', B = 'cdeab'
输出: true

示例 2:
输入: A = 'abcde', B = 'abced'
输出: false

注意:

  • A 和 B 长度不超过 100

Runtime: 4 ms
Memory Usage: 20.2 MB
1 class Solution {
2     func rotateString(_ A: String, _ B: String) -> Bool {
3         if A.isEmpty && B.isEmpty {return true}
4         if A.isEmpty && !B.isEmpty {return false}
5         if !A.isEmpty && B.isEmpty {return false}
6         return A.count == B.count && (A + A).contains(B)
7     }
8 }

4ms

1 class Solution {
2     func rotateString(_ A: String, _ B: String) -> Bool {
3         guard A.count == B.count else { return false }
4         guard !A.isEmpty && !B.isEmpty else { return true }
5         return (A + A).contains(B)
6     }
7 }

8ms

 1 class Solution {
 2     func rotateString(_ A: String, _ B: String) -> Bool {
 3         
 4         if A.count == 0 && B.count == 0 {
 5             return true
 6         }
 7 
 8         var A = A
 9 
10         for _ in 0..<A.count {
11 
12             if A == B {
13                 return true
14             }
15 
16             let index = A.index(A.startIndex, offsetBy: 0)
17             A.append(A[index])
18             A.removeFirst()
19         }
20 
21         return false
22     }
23 }

16ms

 1 class Solution {
 2     func rotateString(_ A: String, _ B: String) -> Bool {
 3         
 4         guard A.count == B.count else {
 5             return false
 6         }
 7         
 8         var A = A
 9         
10         for _ in 0..<A.count where A != B {
11             A.append(A.removeFirst())
12         }
13         
14         return A == B
15     }
16 }

20016kb

 1 class Solution {
 2     func rotateString(_ A: String, _ B: String) -> Bool {
 3         guard A.length == B.length else { return false }
 4         guard A != B else { return true }
 5         guard B.length > 0 else { return false }
 6         guard A.length > 0 else { return false }
 7         
 8         let chars = Array(A).map({ String($0) })
 9         let n = chars.count
10         var fullRotation = [String](repeating:" ", count: 2 * n - 1)
11         
12         for i in 0..<n {
13             fullRotation[i + n - 1] = chars[i]
14         }
15         for i in (1..<n).reversed() {
16             fullRotation[i - 1] = chars[i]
17         }
18         
19         return fullRotation.joined().contains(B)
20     }
21 }

 

posted @ 2019-03-17 15:43  为敢技术  阅读(347)  评论(0编辑  收藏  举报