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

โปรแกรม Java แบ่งสตริงเป็นซับสตริงทุกความยาวที่เป็นไปได้


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการแบ่งสตริง (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 ซับสตริง