Trong bài viết này, chúng ta sẽ tìm hiểu cách tách chuỗi thành các chuỗi con (substring) tất cả các tổ hợp có thể. String là kiểu dữ liệu chứa một hoặc nhiều ký tự, bao quanh bởi dấu nháy kép. Phần hoặc tập con của chuỗi gọi là substring.
Ví dụ minh họa
Đầu vào:
Chuỗi đầu vào: JVM
Đầu ra mong muốn:
Danh sách substring: [J, JV, JVM, V, VM, M] Các chuỗi con: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"
Thuật toán
- Bắt đầu
- Khai báo chuỗi
input_stringvà ArrayListstring_list - Gán giá trị
- Duyệt qua độ dài chuỗi bằng 2 vòng lặp lồng nhau, thêm mọi substring từ i đến j vào list
- In danh sách dưới dạng ArrayList
- In từng substring với số thứ tự
- Kết thúc
Ví dụ 1: Xử lý trực tiếp trong main
import java.io.*;
import java.util.ArrayList;
public class SubString {
public static void main(String[] args) {
System.out.println("Đã nhập các gói cần thiết");
String input_string = "JVM";
System.out.println("Chuỗi được định nghĩa: " + input_string);
int i, j;
int string_length = input_string.length();
ArrayList<String> string_list = new ArrayList<String>();
for (i = 0; i < string_length; i++) {
for (j = i + 1; j <= string_length; j++) {
string_list.add(input_string.substring(i, j));
}
}
ArrayList<String> result = string_list;
System.out.println("\nDanh sách substring:");
System.out.println(result);
System.out.println("\nCác chuỗi con:");
int count = 1;
for (String it : result) {
System.out.println("(" + count + ") \"" + it + "\"");
count++;
}
}
}
Kết quả
Đã nhập các gói cần thiết Chuỗi được định nghĩa: JVM Danh sách substring: [J, JV, JVM, V, VM, M] Các chuỗi con: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"
Ví dụ 2: Sử dụng phương thức tách biệt (OOP)
import java.io.*;
import java.util.ArrayList;
public class SubString {
public static ArrayList<String> split_string(String input_string) {
int i, j;
int string_length = input_string.length();
ArrayList<String> string_list = new ArrayList<String>();
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("Đã nhập các gói cần thiết");
String input_string = "JVM";
System.out.println("Chuỗi được định nghĩa: " + input_string);
ArrayList<String> string_list = SubString.split_string(input_string);
System.out.println("\nDanh sách substring:");
System.out.println(string_list);
System.out.println("\nCác chuỗi con:");
int count = 1;
for (String it : string_list) {
System.out.println("(" + count + ") \"" + it + "\"");
count++;
}
}
}
Kết quả
Đã nhập các gói cần thiết Chuỗi được định nghĩa: JVM Danh sách substring: [J, JV, JVM, V, VM, M] Các chuỗi con: (1) "J" (2) "JV" (3) "JVM" (4) "V" (5) "VM" (6) "M"