สมมติว่าเรามีสองสตริง s และ t เราต้องตรวจสอบว่า s เป็นการหมุนของ t หรือไม่ กล่าวอีกนัยหนึ่ง เราจะได้ t หลังจากหมุน s หรือไม่
ดังนั้น หากอินพุตเป็น s ="helloworld" และ t ="worldhello" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้าขนาดของ s0 ไม่เท่ากับขนาดของ s1 ดังนั้น −
-
คืนค่าเท็จ
-
-
s :=s0 ต่อ s0
-
คืนค่าจริงเมื่อ s1 อยู่ใน s มิฉะนั้น 0
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#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"));
} อินพุต
"helloworld", "worldhello"
ผลลัพธ์
1