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
andB
will have length at most100
.
给定两个字符串, 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 }
原文地址:https://www.cnblogs.com/strengthen/p/10547242.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。