สำหรับ String A = "abcd" คำตอบควรเป็น
{a,ab,abc,abcd,b,bc,bcd,c,cd,d}
เพื่อค้นหาสตริงย่อยทั้งหมดที่ฉันใช้วิธีการต่อไปนี้
for (int i = 0; i < A.length(); i++) {
for (int j = i+1; j <= A.length(); j++) {
System.out.println(A.substring(i,j));
}
}
แต่ตามความเข้าใจของฉัน ความซับซ้อนไปที่ O(N^2)
เราจะทำให้เร็วขึ้นได้ไหม? ฉันอ้างถึงคำถามก่อนหน้านี้และมีลิงก์สำหรับ suffix tree แต่ดูเหมือนจะไม่ แก้ปัญหาของฉัน ผลลัพธ์ที่ฉันได้รับจากทรีต่อท้ายคือ
{
1: abcd
2: bcd
3: cd
4: d
}
ใครก็ได้โปรดช่วยฉันหาวิธีที่เร็วที่สุดในการทำเช่นนี้? บางอย่างเช่นในเวลาเชิงเส้น?
for (int j = i+1; j <= A.length(); j++)
ควรเปลี่ยนเป็นfor (int j = i+1; j <= A.length() - i; j++)
- person HojjatK   schedule 09.06.2019