두 개의 문자열 'a'와 'b'가 있다고 가정하고, 작업은 문자열 'a'를 시계 반대 방향 또는 시계 방향으로 정확히 2자리 회전하여 문자열 'b'를 얻을 수 있는지 여부를 찾는 것입니다. 예를 들어,
입력-1 -
a = google b = legoog
출력 -
True
설명 − 문자열 'google'은 시계 반대 방향으로 두 자리 회전할 수 있으며 결과적으로 문자열 'legoog'가 생성됩니다. 따라서 True를 반환합니다.
입력-2 -
a = tuorialst b = tutorials
출력 -
False
설명 − 문자열 'tuorialst'는 다른 문자열 'tutorials'를 얻기 위해 어떤 방향으로도 두 위치만큼 회전할 수 없습니다. 따라서 False를 반환합니다.
이 문제를 해결하기 위해 사용된 접근 방식
주어진 두 문자열에 대해 이 접근 방식에는 두 가지 경우가 있습니다.
-
반시계 방향 회전용
-
시계 방향 회전의 경우.
먼저 두 문자열의 길이가 다르면 false를 반환합니다. 그렇지 않고 두 문자열의 길이가 '2'보다 작거나 같으면 True를 반환합니다.
다른 경우에는 반시계 방향으로 두 자리 회전하여 문자열 'b'의 부분 문자열이 문자열 'a'와 같은지 확인한 다음 True를 반환합니다. 그렇지 않으면 거짓입니다.
마찬가지로, 문자열 'b'를 시계 방향으로 두 자리 회전하여 문자열 'a'와 같게 되면 True를 반환하고 그렇지 않으면 false를 반환합니다.
-
두 개의 입력 문자열 'a'와 'b' 사용
-
부울 함수 checkRotated(문자열 a, 문자열 b)는 두 개의 문자열 'a'와 문자열 'b'를 취하고 문자열 'b'를 시계 반대 방향 또는 시계 방향으로 회전하여 동일한 경우 반환합니다.
-
문자열 'a'와 문자열 'b'의 길이를 확인하세요.
-
시계 반대 방향으로 두 자리 회전하여 문자열 'b'의 부분 문자열을 찾습니다.
-
이제 결과 부분 문자열이 문자열 'a'와 같은지 확인하고 같으면 true를 반환합니다.
-
문자열 'b'의 부분 문자열을 시계 방향으로 두 곳에서 회전하여 찾습니다.
-
이제 결과 부분 문자열이 문자열 'a'와 같은지 확인하고 같으면 true를 반환합니다.
-
문자열이 같지 않으면 false를 반환합니다.
예
public class Solution{ static boolean checkRotated(String str1, String str2){ String s1=""; String s2=""; int len= str2.length(); if (str1.length() != str2.length()) return false; s1= str2.substring(len-2, len)+ str2.substring(0,len-2); s2= str2.substring(0,2) + str2.substring(0,2); return (str1.equals(s1) || str1.equals(s2)); } public static void main(String[] args){ String s1= "google"; String s2= "legoog"; System.out.println(checkRotated(s1,s2) ? "True":"False"); } }
출력
위의 코드를 실행하면 출력이 다음과 같이 인쇄됩니다.
False
위 코드의 출력은 "True"이므로 'True'가 출력됩니다.