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

โปรแกรม Java สำหรับกลับลำดับสตริงโดยใช้ Stack


ในบทความนี้ เราจะเรียนรู้วิธีการกลับลำดับสตริง (reverse a string) โดยใช้โครงสร้างข้อมูล Stack สตริงเป็นชนิดข้อมูลที่ประกอบด้วยอักขระหนึ่งตัวขึ้นไป และถูกล้อมรอบด้วยเครื่องหมายคำพูดคู่ (" ") ส่วน Stack เป็นโครงสร้างข้อมูลเชิงเส้นที่ใช้เก็บชุดของวัตถุ โดยทำงานตามหลัก Last-In-First-Out (LIFO) คือ ตัวที่เข้าไปทีหลังจะออกมาก่อน

ตัวอย่างการทำงาน

สมมติข้อมูลนำเข้า (Input) คือ:

Input string: Java Program

ผลลัพธ์ที่ต้องการ (Output) คือ:

Reversed string: margorP avaJ

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศตัวแปรสตริง 2 ตัว คือ input_string และ result ตัวแปร Stack ชื่อ stack และตัวแปร char ชื่อ reverse
ขั้นตอนที่ 3 - กำหนดค่าให้กับตัวแปรต่างๆ
ขั้นตอนที่ 4 - วนลูปผ่านอักขระแต่ละตัวของสตริงโดยใช้ for-loop และ push อักขระแต่ละตัวเข้า Stack ด้วยคำสั่ง 'push'
ขั้นตอนที่ 5 - Pop ออกมาจาก Stack ทีละตัวด้วยคำสั่ง 'pop' และนำไปต่อท้ายกันในตัวแปร result
ขั้นตอนที่ 6 - แสดงผลลัพธ์
ขั้นตอนที่ 7 - จบการทำงาน

ตัวอย่างที่ 1: เขียนโค้ดทั้งหมดในฟังก์ชัน main

import java.util.*; 
public class ReverseString { 
    public static void main(String[] args) { 
        System.out.println("Required packages have been imported"); 
        String input_string = "Java Program"; 
        System.out.println("The string is defined as " + input_string); 
        char[] reverse = new char[input_string.length()]; 
        Stack<Character> stack = new Stack<Character>(); 
        for (int i = 0; i < input_string.length(); i++) { 
            stack.push(input_string.charAt(i)); 
        } 
        int i = 0; 
        while (!stack.isEmpty()) { 
            reverse[i++] = stack.pop(); 
        } 
        String result = new String(reverse); 
        System.out.println("\nThe reversed string is: " + result); 
    } 
}

ผลลัพธ์

Required packages have been imported
The string is defined as Java Program
The reversed string is: margorP avaJ

ตัวอย่างที่ 2: ใช้ฟังก์ชันแยก (Object-Oriented Style)

import java.util.*; 
public class ReverseString { 
    public static String reverse_string(String input_string) { 
        char[] reverse = new char[input_string.length()]; 
        Stack<Character> stack = new Stack<Character>(); 
        for (int i = 0; i < input_string.length(); i++) { 
            stack.push(input_string.charAt(i)); 
        } 
        int i = 0; 
        while (!stack.isEmpty()) { 
            reverse[i++] = stack.pop(); 
        } 
        return new String(reverse); 
    } 
    public static void main(String[] args) { 
        System.out.println("Required packages have been imported"); 
        String input_string = "Java Program"; 
        System.out.println("The string is defined as " + input_string); 
        System.out.println("\nThe reversed string is: " + reverse_string(input_string)); 
    } 
}

ผลลัพธ์

Required packages have been imported
The string is defined as Java Program
The reversed string is: margorP avaJ