여기서 우리는 두 문자열이 서로 회전하는지 여부를 알 수 있는 하나의 프로그램을 볼 것입니다. 문자열의 회전은 −
와 같습니다.두 문자열이 S1 ='HELLO', S2 ='LOHEL'이라고 가정하면 서로 회전합니다. HELLO를 왼쪽으로 세 위치 회전하면 LOHEL이 됩니다.
이 문제를 해결하기 위해 첫 번째 문자열을 자신과 연결한 다음 연결된 문자열에 두 번째 문자열이 있는지 확인합니다. 따라서 HELLO의 경우 HELLOHEL이 됩니다. 봐라. 그런 다음 이 연결된 문자열에 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
예시
#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"; } }
출력
Enter two strings: STACK CKSTA Two strings are rotation of each other