给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。 s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。
var rotateString = function(s, goal) {
const queue = s.split('')
let l = queue.length
while (l--) {
if (queue.join('') === goal) return true
queue.push(queue.shift())
}
return false
};
var rotateString = function(s, goal) {
const n = s.length
if (n !== goal.length) return false
label: for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (s[(j - i + n) % n] !== goal[j]) continue label
}
return true
}
return false
};
func rotateString(s string, goal string) bool {
n := len(s)
if n != len(goal) {
return false
}
label: for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
if s[(j - i + n) % n] != goal[j] {
continue label
}
}
return true
}
return false
}
字符串和包含匹配字符串,则字符串一定能通过旋转,得到匹配字符串
var rotateString = function(s, goal) {
return s.length === goal.length && (s + s).includes(goal)
};
func rotateString(s string, goal string) bool {
return len(s) == len(goal) && strings.Contains(s + s, goal)
}