java使用stack 栈 反转字符串
你可以使用 Java 中的 Stack
类来反转字符串。以下是一个简单的示例代码:
import java.util.Stack;
public class StringReversal {
public static String reverseString(String input) {
if (input == null) {
return null;
}
Stack<Character> stack = new Stack<>();
char[] chars = input.toCharArray();
// 将字符串中的每个字符压入栈
for (char c : chars) {
stack.push(c);
}
// 从栈中弹出字符,以实现字符串反转
StringBuilder reversed = new StringBuilder();
while (!stack.isEmpty()) {
reversed.append(stack.pop());
}
return reversed.toString();
}
public static void main(String[] args) {
String original = "Hello, World!";
String reversed = reverseString(original);
System.out.println("Original: " + original);
System.out.println("Reversed: " + reversed);
}
}
这个示例中,reverseString
方法接受一个字符串作为输入,使用 Stack
将字符串中的每个字符压入栈,然后从栈中弹出字符以实现字符串反转。在 main
方法中,演示了如何使用这个方法来反转字符串并输出结果。在实际应用中,你可以根据需要调整方法,例如处理空字符串或返回 StringBuilder
而不是字符串等。
java使用2个stack 栈 ,实现前进 后退效果
你可以使用两个栈实现一个简单的前进后退效果。一个栈用于存储前进的页面,另一个栈用于存储后退的页面。以下是一个简单的示例:
import java.util.Stack;
public class BrowserNavigation {
private Stack<String> forwardStack;
private Stack<String> backwardStack;
private String currentPage;
public BrowserNavigation() {
forwardStack = new Stack<>();
backwardStack = new Stack<>();
currentPage = "Home"; // 初始页面
}
public void visitPage(String newPage) {
backwardStack.push(currentPage);
forwardStack.clear(); // 清空前进栈
currentPage = newPage;
System.out.println("Visited page: " + currentPage);
}
public void goBack() {
if (!backwardStack.isEmpty()) {
forwardStack.push(currentPage);
currentPage = backwardStack.pop();
System.out.println("Went back to page: " + currentPage);
} else {
System.out.println("Cannot go back, at the beginning.");
}
}
public void goForward() {
if (!forwardStack.isEmpty()) {
backwardStack.push(currentPage);
currentPage = forwardStack.pop();
System.out.println("Went forward to page: " + currentPage);
} else {
System.out.println("Cannot go forward, at the end.");
}
}
public String getCurrentPage() {
return currentPage;
}
public static void main(String[] args) {
BrowserNavigation browser = new BrowserNavigation();
browser.visitPage("Google");
browser.visitPage("GitHub");
browser.visitPage("Stack Overflow");
System.out.println("Current Page: " + browser.getCurrentPage());
browser.goBack();
browser.goBack();
System.out.println("Current Page: " + browser.getCurrentPage());
browser.goForward();
System.out.println("Current Page: " + browser.getCurrentPage());
}
}
这个示例中,BrowserNavigation
类有两个栈 forwardStack
和 backwardStack
,分别用于存储前进和后退的页面。visitPage
方法用于访问新页面,goBack
方法用于后退,goForward
方法用于前进。在 main
方法中,演示了如何使用这个类来模拟浏览器的前进和后退操作。你可以根据实际需求进行扩展和调整。