您的位置:首页 > 编程语言 > Java开发

JAVA栈-实现字符串反转

2018-03-01 08:48 323 查看

一、需求分析

      前段时间出去招聘,主要是面向大四学生,问的问题都比较基础,其中也问了一个在网上可以找见的题目,如何实现字符串反转,我发现很多同学都是有一定思路的,比如反向遍历,或者使用stringbuilder.reverse等都可以,然而这里我们要分享的是通过栈来实现。
       栈是一种先进后出的数据结构,恰好可以用来实现对字符串的反转操作。

二、代码实现

    
import java.util.Arrays;

public class Java栈<T> {
private Object[] array = null;
private int size = 0;
private static final int DEFAULR_INITIAL_SIZE = 10;
private int capacity = 0;

public Java栈() {
this(DEFAULR_INITIAL_SIZE);
}

public Java栈(int initial_size) {
super();
this.capacity = initial_size;
array = new Object[initial_size];
}

@SuppressWarnings("unchecked")
public T pop() {
if (size < 1) {
throw new IllegalStateException("no more elements");
}
T result = (T) array[--size];
array[size] = null;
return result;

}

@SuppressWarnings("unchecked")
public T peek() {
if (size < 1) {
throw new IllegalStateException("no more elements");
}
return (T) array[size - 1];
}

public void push(T e) {
int index = size++;
if (index > capacity) { // 扩容
int new_capacity = capacity + capacity >> 1;
if (new_capacity <= 0) {
new_capacity = Integer.MAX_VALUE;
}
array = Arrays.copyOf(array, new_capacity);
}

array[index] = e;
}

public int getSize() {
return size;
}

public static void main(String[] args) {
Java栈<String> simpleStack = new Java栈<String>();
System.out.print("输入字符串abcde");
simpleStack.push("a");
simpleStack.push("b");
simpleStack.push("c");
simpleStack.push("d");
simpleStack.push("e");
StringBuilder builder = new StringBuilder();
for(int i=0;i<simpleStack.size;) {
String value = simpleStack.pop();
builder.append(value);
}
System.out.println("\t");
System.out.print("输出字符串" + builder.toString().trim());
}
}运行效果输入字符串abcde
输出字符串edcba
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: