Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรมตรวจสอบว่าสตริง 2 ตัวเป็นการหมุน (Rotation) ของกันหรือไม่

ที่นี่เราจะดูโปรแกรมที่บอกว่าสตริง 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