Giới thiệu
Trong bài viết này, chúng ta sẽ tìm hiểu cách đảo ngược một chuỗi (string) bằng cấu trúc dữ liệu Stack. Chuỗi là kiểu dữ liệu chứa một hoặc nhiều ký tự, được đặt trong dấu ngoặc kép (" "). Stack là cấu trúc dữ liệu tuyến tính lưu trữ tập hợp đối tượng, hoạt động theo nguyên tắc Last-In-First-Out (LIFO - Vào sau ra trước).
Minh họa
Đầu vào:
Input string: Java Program
Đầu ra mong muốn:
Reversed string: margorP avaJ
Thuật toán
- Bắt đầu
- Khai báo: chuỗi
input_string,result, stackstack, ký tựreverse - Khởi tạo giá trị
- Duyệt từng ký tự của chuỗi bằng vòng lặp
for, đẩy (push) từng ký tự vào stack - Lấy (pop) từng phần tử từ stack và gán vào chuỗi kết quả
- Hiển thị kết quả
- Kết thúc
Ví dụ 1: Triển khai trong hàm 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);
}
}
Đầu ra
Required packages have been imported The string is defined as Java Program The reversed string is: margorP avaJ
Ví dụ 2: Tách hàm theo hướng đối tượng
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));
}
}
Đầu ra
Required packages have been imported The string is defined as Java Program The reversed string is: margorP avaJ