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

Viết chương trình bằng Java để kiểm tra xem có thể lấy được một chuỗi hay không bằng cách xoay một chuỗi khác theo 2 vị trí

Giả sử chúng ta có hai chuỗi ‘a’ và ‘b’, nhiệm vụ là tìm xem chúng ta có thể lấy được chuỗi ‘b’ hay không bằng cách xoay chuỗi ‘a’ chính xác 2 vị trí theo hướng ngược chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Ví dụ,

Đầu vào-1 -

a = google
b = legoog

Đầu ra -

True

Giải thích - Chuỗi ‘google’ có thể được xoay hai nơi theo hướng ngược chiều kim đồng hồ, điều này dẫn đến chuỗi ‘legoog’. Do đó, chúng tôi trả về True.

Đầu vào-2 -

a = tuorialst
b = tutorials

Đầu ra -

False

Giải thích - Chuỗi ‘tuorialst’ không thể được xoay hai nơi theo bất kỳ hướng nào để lấy chuỗi ‘hướng dẫn’ khác. Do đó, chúng tôi trả về False.

Phương pháp được sử dụng để giải quyết vấn đề này

Đối với hai chuỗi đã cho, chúng ta có hai trường hợp trong cách tiếp cận này -

  • Để xoay ngược chiều kim đồng hồ

  • Đối với xoay theo chiều kim đồng hồ.

Thứ nhất, nếu độ dài của cả hai chuỗi là khác nhau, thì trả về false; ngược lại, nếu độ dài của cả hai chuỗi nhỏ hơn hoặc bằng ‘2’, thì chúng tôi sẽ trả về True.

Trong trường hợp khác, chúng tôi sẽ kiểm tra xem một chuỗi con của chuỗi ‘b’ bằng cách xoay hai nơi ngược chiều kim đồng hồ có trở thành chuỗi ‘a’ hay không, khi đó chúng tôi sẽ trả về True. Ngược lại, Sai.

Tương tự, nếu bằng cách xoay chuỗi ‘b’ theo chiều kim đồng hồ bởi hai vị trí, nó trở thành bằng chuỗi ‘a’, thì trả về True, ngược lại, chúng ta sẽ trả về false.

  • Lấy hai chuỗi nhập ‘a’ và ‘b’

  • Một hàm Boolean checkRotated (chuỗi a, chuỗi b) nhận hai chuỗi ‘a’ và chuỗi ‘b’ và trả về nếu chúng bằng nhau bằng cách xoay chuỗi ‘b’ theo hướng ngược chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.

  • Kiểm tra độ dài của chuỗi ‘a’ và chuỗi ‘b’.

  • Tìm chuỗi con của chuỗi ‘b’ bằng cách xoay hai vị trí ngược chiều kim đồng hồ.

  • Bây giờ, hãy kiểm tra xem chuỗi con kết quả có bằng chuỗi ‘a’ hay không và trả về true nếu nó bằng.

  • Tìm chuỗi con của chuỗi ‘b’ bằng cách xoay nó ở hai nơi theo chiều kim đồng hồ.

  • Bây giờ, hãy kiểm tra xem chuỗi con kết quả có bằng chuỗi ‘a’ hay không và trả về true nếu nó bằng.

  • Nếu các chuỗi không bằng nhau, thì trả về false.

Ví dụ

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

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ in ra kết quả là,

False

Vì đầu ra của đoạn mã trên là "True", nó sẽ in ra "True".