JAVA栈-实现字符串反转

本文介绍了如何通过栈数据结构来实现字符串的反转操作。在面试中,此问题常被用来考察候选人的基础数据结构知识。栈的先进后出特性使得它能有效地反转字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求分析

      前段时间出去招聘,主要是面向大四学生,问的问题都比较基础,其中也问了一个在网上可以找见的题目,如何实现字符串反转,我发现很多同学都是有一定思路的,比如反向遍历,或者使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值