สมมติว่าเรามีสองสตริง 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