บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการแบ่งสตริง (Split) เป็นซับสตริง (Sub-strings) ทุกความยาวที่เป็นไปได้ สตริงเป็นชนิดข้อมูลที่ประกอบด้วยตัวอักษรหนึ่งตัวขึ้นไป และล้อมรอบด้วยเครื่องหมายคำพูดคู่ (" ") ซับสตริงคือส่วนหนึ่งหรือเซตย่อยของสตริง
ตัวอย่างการทำงาน
อินพุทตัวอย่าง:
Input string: JVM
เอาต์พุทที่คาดหวัง:
The substring list printed as an ArrayList : [J, JV, JVM, V, VM, M] The sub-strings after splitting is: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศสตริง input_string และ ArrayList string_list ขั้นตอนที่ 3 - กำหนดค่า ขั้นตอนที่ 4 - วนลูปซ้อน (Nested loops) ตามความยาวสตริง เพิ่มทุก substring เข้าไปในลิสต์ ขั้นตอนที่ 5 - พิมพ์ซับสตริงเป็น ArrayList ใช้ตัวนับนับจำนวนซับสตริง ขั้นตอนที่ 6 - แสดงผลลัพธ์ ขั้นตอนที่ 7 - จบการทำงาน
ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง
import java.io.*;
import java.util.ArrayList;
public class SubString {
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String input_string = "JVM";
System.out.println("The string is defined as: " + input_string);
int i, j;
int string_length = input_string.length();
ArrayList string_list = new ArrayList();
for (i = 0; i < string_length; i++) {
for (j = i + 1; j <= string_length; j++) {
string_list.add(input_string.substring(i, j));
}
}
ArrayList result = string_list;
System.out.println("\nThe substring list printed as an ArrayList : ");
System.out.println(result);
System.out.println("\nThe sub-strings after splitting is: ");
int count = 1;
for (String it : result) {
System.out.println("(" + count + ") \"" + it + "\"");
count++;
}
}
}
เอาต์พุท
Required packages have been imported The string is defined as: JVM The substring list printed as an ArrayList : [J, JV, JVM, V, VM, M] The sub-strings after splitting is: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"
ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)
import java.io.*;
import java.util.ArrayList;
public class SubString {
public static ArrayList split_string(String input_string) {
int i, j;
int string_length = input_string.length();
ArrayList string_list = new ArrayList();
for (i = 0; i < string_length; i++) {
for (j = i + 1; j <= string_length; j++) {
string_list.add(input_string.substring(i, j));
}
}
return string_list;
}
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String input_string = "JVM";
System.out.println("The string is defined as: " + input_string);
ArrayList string_list = SubString.split_string(input_string);
System.out.println("\nThe substring list printed as an ArrayList : ");
System.out.println(string_list);
System.out.println("\nThe sub-strings after splitting is: ");
int count = 1;
for (String it : string_list) {
System.out.println("(" + count + ") \"" + it + "\"");
count++;
}
}
}
เอาต์พุท
Required packages have been imported The string is defined as: JVM The substring list printed as an ArrayList : [J, JV, JVM, V, VM, M] The sub-strings after splitting is: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"
คณิตศาสตร์เบื้องหลัง: สำหรับสตริงความยาว n จำนวนซับสตริงทั้งหมด = n(n+1)/2
ตัวอย่าง: "JVM" (n=3) → 3×4/2 = 6 ซับสตริง