สมมติว่าเรามีสตริง '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"