Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เขียนโปรแกรมใน Java เพื่อตรวจสอบว่าสามารถรับสตริงได้หรือไม่โดยการหมุนสตริงอื่น 2 ตำแหน่ง


สมมติว่าเรามีสตริง 'a' และ 'b' สองสตริง ภารกิจคือการค้นหาว่าเราสามารถรับสตริง 'b' โดยการหมุนสตริง 'a' ได้ 2 ตำแหน่งในทิศทางทวนเข็มนาฬิกาหรือตามเข็มนาฬิกา ตัวอย่างเช่น

อินพุต-1

a = google
b = legoog

ผลผลิต

True

คำอธิบาย − สตริง 'google' สามารถหมุนในทิศทางทวนเข็มนาฬิกาได้สองตำแหน่ง ซึ่งส่งผลให้สตริง 'legoog' ดังนั้นเราจึงคืนค่าเป็น True

อินพุต-2

a = tuorialst
b = tutorials

ผลผลิต

False

คำอธิบาย − สตริง 'tuorialst' ไม่สามารถหมุนสองตำแหน่งในทิศทางใดก็ได้เพื่อรับ 'บทช่วยสอน' สตริงอื่น ดังนั้นเราจึงคืนค่าเป็นเท็จ

แนวทางที่ใช้ในการแก้ปัญหานี้

สำหรับสองสตริงที่กำหนด เรามีสองกรณีในแนวทางนี้ -

  • สำหรับการหมุนทวนเข็มนาฬิกา

  • สำหรับการหมุนตามเข็มนาฬิกา

ประการแรก หากความยาวของทั้งสองสตริงต่างกัน ให้คืนค่าเท็จ มิฉะนั้น หากความยาวของทั้งสองสตริงน้อยกว่าหรือเท่ากับ '2' เราจะคืนค่าเป็น True

ในกรณีอื่นๆ เราจะตรวจสอบว่าสตริงย่อยของสตริง 'b' โดยการหมุนสองตำแหน่งทวนเข็มนาฬิกาเท่ากับสตริง 'a' หรือไม่ จากนั้นเราจะคืนค่า True มิฉะนั้น เท็จ

ในทำนองเดียวกัน หากหมุนสตริง 'b' ในทิศทางตามเข็มนาฬิกาโดยสองตำแหน่ง สตริงนั้นจะกลายเป็นสตริง 'a' จากนั้นคืนค่า True มิฉะนั้นเราจะคืนค่าเท็จ

  • รับสองสตริงอินพุต 'a' และ 'b'

  • ฟังก์ชันบูลีน checkRotated(สตริง a, สตริง b) รับสองสตริง 'a' และสตริง 'b' และส่งคืนหากเท่ากันโดยการหมุนสตริง 'b' ในทิศทางทวนเข็มนาฬิกาหรือตามเข็มนาฬิกา

  • ตรวจสอบความยาวของสตริง 'a' และสตริง 'b'

  • ค้นหาสตริงย่อยของสตริง 'b' โดยหมุนสองตำแหน่งในทวนเข็มนาฬิกา

  • ตอนนี้ตรวจสอบว่าสตริงย่อยที่เป็นผลลัพธ์เท่ากับสตริง 'a' หรือไม่ และคืนค่าเป็น จริง ถ้ามันเท่ากับ

  • ค้นหาสตริงย่อยของสตริง 'b' โดยหมุนเป็นสองตำแหน่งในทิศทางตามเข็มนาฬิกา

  • ตอนนี้ตรวจสอบว่าสตริงย่อยที่เป็นผลลัพธ์เท่ากับสตริง 'a' หรือไม่ และคืนค่าเป็น จริง ถ้ามันเท่ากับ

  • หากสตริงไม่เท่ากัน ให้คืนค่าเท็จ

ตัวอย่าง

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"