ที่นี่เราจะดูโปรแกรมที่บอกว่าสตริง 2 ตัวเป็นการหมุนของกันหรือไม่ การหมุนสตริง เช่น
S1 = 'HELLO', S2 = 'LOHEL' → เป็นการหมุนของกัน เพราะหมุน HELLO 3 ตำแหน่งซ้าย ได้ LOHEL
วิธีแก้: ต่อสตริงตัวแรกกับตัวเอง แล้วเช็คว่าสตริงตัวที่สองอยู่ในสตริงที่ต่อแล้วหรือไม่ HELLO + HELLO = HELLOHELLO ซึ่งประกอบด้วย LOHEL
อัลกอริทึม
isRotation(str1, str2)
begin
if lengths of str1 and str2 are not same then return false;
temp := concatenate str1 with str1 itself
if temp contains str2, then
return true
otherwise return false
end
ตัวอย่างโค้ด (C++)
#include <iostream>
using namespace std;
bool isRotation(string str1, string str2) {
if (str1.length() != str2.length())
return false;
string con_str = str1 + str1;
if (con_str.find(str2) != string::npos)
return true;
else
return false;
}
int main() {
string str1, str2;
cout << "Enter two strings: ";
cin >> str1 >> str2;
if (isRotation(str1, str2))
cout << "Two strings are rotation of each other";
else
cout << "Two strings are not rotation of each other";
}
ผลลัพธ์
Enter two strings: STACK CKSTA Two strings are rotation of each other