Java 示例 - 使用堆栈反转字符串

  • 问题描述

    如何使用堆栈反转字符串?
  • 解决方案

    以下示例显示了如何在用户定义的方法 StringReverserThroughStack() 的帮助下使用堆栈反转字符串。
    
    import java.io.IOException;
    public class StringReverserThroughStack {
       private String input; 
       private String output;
       public StringReverserThroughStack(String in) {
          input = in;
       }
       public String doRev() {
          int stackSize = input.length(); 
          Stack theStack = new Stack(stackSize); 
          
          for (int i = 0; i < input.length(); i++) {
             char ch = input.charAt(i); 
             theStack.push(ch); 
          }
          output = "";
          while (!theStack.isEmpty()) {
             char ch = theStack.pop(); 
             output = output + ch; 
          }
          return output;
       }
       public static void main(String[] args) throws IOException {
          String input = "Java Source and Support";
          String output;
          StringReverserThroughStack theReverser = 
          new StringReverserThroughStack(input);
          output = theReverser.doRev();
          System.out.println("Reversed: " + output);
       }
       class Stack {
          private int maxSize;
          private char[] stackArray;
          private int top;
          
          public Stack(int max) {
             maxSize = max;
             stackArray = new char[maxSize];
             top = -1;
          }
          public void push(char j) {
             stackArray[++top] = j;
          }
          public char pop() {
             return stackArray[top--];
          }
          public char peek() {
             return stackArray[top];
          }
          public boolean isEmpty() {
             return (top == -1);
          }
       }
    }
    
  • 结果

    上面的代码示例将产生以下结果。
    
    JavaStringReversal
    Reversed:lasreveRgnirtSavaJ
    
    以下是使用堆栈反转字符串的示例。
    
    import java.util.Scanner;
    class Stack {
       private int maxSize;
       private char[] stackArray;
       private int top;
       
       public Stack(int s) {
          maxSize = s;
          stackArray = new char[maxSize];
          top = -1; 
       } 
       public void push(char j) {
          stackArray[++top] = j;
       } 
       public char pop() {
          return stackArray[top--];
       } 
       public char peek() {
          return stackArray[top];
       } 
       public boolean isEmpty() { 
          return (top == -1);
       } 
       public boolean isFull() {
          return (top == maxSize - 1);
       }
    }
    public class Demo {
       public static void main(String[] args) {
          System.out.println("Enter a sentence: ");
          Scanner scan = new Scanner(System.in);
          String input = scan.nextLine();
          int stackSize = input.length();
          Stack theStack = new Stack(stackSize);
          
          for (int j = 0; j < input.length(); j++) {
             char ch = input.charAt(j);
             theStack.push(ch);
          } 
          while (!theStack.isEmpty()) {
             char ch = theStack.pop();
             System.out.println(ch);
          } 
       }
    }
    
    上面的代码示例将产生以下结果。
    
    Enter a sentence: 
    sai
    i
    a
    s