Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

다른 문자열을 2자리 회전하여 문자열을 얻을 수 있는지 확인하는 프로그램을 Java로 작성

<시간/>

두 개의 문자열 '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'가 출력됩니다.