Computer >> Máy Tính >  >> Lập trình >> lập trình C

Một chương trình để kiểm tra xem các chuỗi có phải là luân phiên của nhau hay không?

Ở đây chúng ta sẽ thấy một chương trình có thể cho biết liệu hai chuỗi có luân phiên nhau hay không. Vòng quay của các chuỗi giống như -

Giả sử hai chuỗi là S1 =‘HELLO’, và S2 =‘LOHEL’ Vì vậy, chúng là chuyển động quay của nhau. Bằng cách xoay HELLO ba vị trí sang trái, nó sẽ là LOHEL.

Để giải quyết vấn đề này, chúng ta sẽ nối chuỗi đầu tiên với chính nó, sau đó kiểm tra xem chuỗi thứ hai có trong chuỗi đã nối hay không. Vì vậy, đối với HELLO, nó sẽ là HEL LOHEL LO. Sau đó, chuỗi được nối này chứa LOHEL. [HELLOHELLO].

Thuật toán

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

Ví dụ

#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;
   }
}
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";
   }
}

Đầu ra

Enter two strings: STACK CKSTA
Two strings are rotation of each other