Giả sử chúng ta có hai chuỗi s và t. Chúng ta cần kiểm tra xem s có phải là chuỗi xoay vòng của t hay không, nói cách khác, có thể lấy được t sau khi xoay vòng s không?
Ví dụ, nếu đầu vào là s = "helloworld" và t = "worldhello", thì kết quả sẽ là True.
Để giải quyết bài toán này, ta thực hiện các bước sau:
- Nếu độ dài của
s0không bằng độ dài củas1, trả vềfalse. - Gán
s := s0 + s0(nốis0với chính nó). - Trả về
truenếus1là chuỗi con củas, ngược lại trả về0.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool solve(string s0, string s1) {
if (s0.size() != s1.size())
return false;
string s = s0 + s0;
return s.find(s1) != string::npos;
}
};
int main() {
Solution ob;
cout << (ob.solve("helloworld", "worldhello"));
}
Đầu vào
"helloworld", "worldhello"
Đầu ra
1