LeetCode in Kotlin

796. Rotate String

Easy

Given two strings s and goal, return true if and only if s can become goal after some number of shifts on s.

A shift on s consists of moving the leftmost character of s to the rightmost position.

Example 1:

Input: s = “abcde”, goal = “cdeab”

Output: true

Example 2:

Input: s = “abcde”, goal = “abced”

Output: false

Constraints:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    private fun check(s: String, goal: String, i: Int): Boolean {
        var i = i
        var j = 0
        val len = goal.length
        while (j < len) {
            if (i == len) {
                i = 0
            }
            if (s[i] != goal[j]) {
                return false
            }
            j++
            i++
        }
        return true
    }

    fun rotateString(s: String, goal: String): Boolean {
        if (s.length != goal.length) {
            return false
        }
        val len = s.length
        if (s[0] == goal[0] && s != goal) {
            return false
        }
        for (i in 0 until len) {
            if (s[i] == goal[0] && check(s, goal, i)) {
                return true
            }
        }
        return false
    }
}