2014-11-24 64 views
0

我想知道如何扭转在java中 我已经做了简单的部分用户inputed字或字符串..使用堆栈结构扭转一个字符串/字

import java.util.Scanner; 
public class Stack 
{ 
    public static void main(String args[]){ 
     System.out.println("Please enter a word to reverse: "); 
     Scanner sc=new Scanner(System.in); 
     String name=sc.nextLine(); 


    } 

    private int maxSize; // size of stack array 
    private long[] stackArray; 
    private int top; // top of stack 
    public Stack(int s) { // constructor 
     maxSize = s; // set array size 
     stackArray = new long[maxSize]; // create array 
     top = -1; // no items yet 
     }  
    public void push(long j) { // put item on top of stack 
     top++; 
     stackArray[top] = j; // increment top, insert item 
     } 
    public long pop() { // take item from top of stack 

     return stackArray[top--]; //access item, decrement top 
     } 
} 

这基本上只是发生在用户输入和什么也不做(并有pop和push方法)

只是想知道,如果有人可以帮助我扭转串让我们说“你好”(记住其用户提交的字符串不过)

任何帮助将不胜感激

+0

那么,将单词中的每个字符推入堆栈时会发生什么? – Kayaman 2014-11-24 20:24:18

+0

你快到了!将“Hello”插入堆栈 - >'[H,e,l,l,o - >'。弹出堆栈中的每个元素,首先弹出“o”,然后是l,l,e,最后是H. – Maroun 2014-11-24 20:25:11

+0

您是否需要使用堆栈,因为您可以使用StringBuilder.reverse ... – brso05 2014-11-24 20:25:55

回答

-3

您可以使用java的Stack集合,并且只需将每个字符都插入到它中。 然后弹出其中的每个人并连接它们,你会得到相反的单词。

public static void main(String[] args) { 
    Stack<String> stack = new Stack<String>(); 
    StringBuilder stringBuilder = new StringBuilder(); 
    String word = "WORD"; 
    for (int i = 0; i < word.length(); i++) { 
     stack.push(word.substring(i,i+1)); 
    } 
    for (int i = 0; i < word.length(); i++) { 
     stringBuilder.append(stack.pop()); 
    } 
    System.out.println(stringBuilder.toString()); 
} 
+0

@Kayaman我知道如何实际上扭转它... 它更多如何将字符串拆分为字符来弹出它们等 – 2014-11-24 20:27:48

+0

有一点帮助,如果他问他自己已经想过了,没有什么不对。但是无论哪种方式,我都给你堆栈集合的答案,你必须用数组实现它,我只是给你一半的方式。 – 2014-11-24 20:28:48

+0

@luisdurazoa你为他写了代码,这不是“一点帮助”。 – Kayaman 2014-11-24 20:30:54

2
  1. 你的long的堆栈,但你想要的char个堆栈。你会如何解决这个问题?
  2. 如果您将2个字符压入堆栈,然后将它们弹出并将每个字符串依次追加到新字符串,会发生什么?