论坛首页 招聘求职论坛

栈的变相面试题:(将字符串逆序)

浏览 9189 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-10   最后修改:2009-09-10

写一个算法,将字符串逆序

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;



public class ReverseApp{
   public static void main(String args[]) throws IOException{
	   String input,output;
	   while(true){
		   System.out.print("请输入一个字符串");
		   System.out.flush();
		   input=getString();
		   if(input.equals(" ")){
		   	 break;
		   }
		   
		   Reverser theReverser=new Reverser(input);
		   output=theReverser.doRev();
		   System.out.println("反转后是"+output);
	
		}
	}
	
	public static String getString()throws IOException{
		InputStreamReader isr=new InputStreamReader(System.in);
		BufferedReader br=new BufferedReader(isr);
		String s=br.readLine();
		return s;
	}

}



class Reverser{
	
		private String input;
		private String output;
		
		public Reverser(String in){
			input=in;
		}
		
		//执行反转
		public String doRev(){
			int stackSize=input.length();
			Stackx theStack = new Stackx(stackSize);
			
			for(int j=0; j<input.length();j++){
				char ch=input.charAt(j);
				theStack.push(ch);
			}	
			
			output=" ";
			while(!theStack.isEmpty()){
				char ch=theStack.pop();
				output=output+ch;
			}
			return output;
		}
}		
		
	
	
//栈  
class Stackx{
	//三个必须元素
	private int maxSize;
	private char[] stackArray;
	private int top;	
	
	//构造栈
	public Stackx(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);
	}
		
}	


 

   发表时间:2009-09-10  
Java数据结构和算法中文第二版里面有讲过...
0 请登录后投票
   发表时间:2009-09-10  
字符串是数组实现的。就不用这样复杂了把。直接用数组把。
0 请登录后投票
   发表时间:2009-09-10  
rain2005 写道
字符串是数组实现的。就不用这样复杂了把。直接用数组把。

方法很多的   跟着转载的好几种方法   
这是为了体现栈。一楼说的很正确  这就是书上那个算法
0 请登录后投票
   发表时间:2009-09-14  
高耦合的代码啊......重构下吧
0 请登录后投票
   发表时间:2009-09-14  
应该用C来写.....而不是java
0 请登录后投票
   发表时间:2009-09-14  
恩,我也觉得对要求效率的算法确实要用c写,再用jni调调。
0 请登录后投票
   发表时间:2009-09-14  
caiwenhn2008 写道
恩,我也觉得对要求效率的算法确实要用c写,再用jni调调。

感谢啊   小弟学习了
0 请登录后投票
   发表时间:2009-09-15  
caiwenhn2008 写道
恩,我也觉得对要求效率的算法确实要用c写,再用jni调调。


学习了
0 请登录后投票
   发表时间:2009-09-15  
StringUtils.reverse
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics