## LeetCode 796. Rotate String https://leetcode.com/problems/rotate-string/description/ ## 題目大意 給定兩個字串 `s` 和 `goal` ,若且唯若 `s` 可以經由幾次的**移位**操作變成 `goal` 回傳 `true` 定義**移位**操作是指將 s 的最左邊字元移動到最右邊的位置 ## 思考 想法用 Naive substring search 就好 不過我下面是用標準庫的東西解題,想要用 for loop 自己寫應該也不難,只是我覺得這題這麼簡單,能用標準庫就用標準庫 C++: ```cpp! class Solution { public: bool rotateString(string s, string goal) { return s.length() == goal.length() && (s + s).find(goal) != string::npos; } }; ``` Go: ```go! func rotateString(s string, goal string) bool { if len(s) != len(goal) { return false } return strings.Contains(s+s, goal) } ``` 時間複雜度大概是 $O(n^2)$