Java基础编程500题——Stack

 💥 该系列属于【Java基础编程500题】专栏,如您需查看Java基础的其他相关题目,请您点击左边的连接

目录

1. 使用Stack实现一个简单的栈操作程序,包含入栈、出栈和查看栈顶元素的功能。

2. 使用Stack实现一个简单的逆序输出字符串的功能。

3. 使用Stack判断一个字符串是否是回文。

4. 使用Stack反转一个整数。

5. 使用栈来判断字符串中的括号是否匹配。


✨✨  返回题目目录 ✨ ✨ 

Java基础编程500题


1. 使用Stack实现一个简单的栈操作程序,包含入栈、出栈和查看栈顶元素的功能。

import java.util.Stack;

class Main {

    public static void main(String[] args) {
        Stack<Character> st = new Stack<>();
        //入栈
        st.push('A');
        st.push('B');
        st.push('C');
        System.out.println(st.toString());

        //出栈
        Character pop = st.pop();
        System.out.println(pop);

        //栈顶元素
        System.out.println(st.peek());

    }
}

2. 使用Stack实现一个简单的逆序输出字符串的功能。

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        String input = "abcdefg";
        Stack<Character> stack = new Stack<>();

        // 将字符串中的字符依次入栈
        for (char c : input.toCharArray()) {
            stack.push(c);
        }

        // 出栈并输出字符
        while (!stack.isEmpty()) {
            System.out.print(stack.pop());
        }
    }
}

3. 使用Stack判断一个字符串是否是回文。

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        String input = "上海自来水来自海上";
        Stack<Character> stack = new Stack<>();
        
        // 将字符串中的字符(除去空格)依次入栈
        for (char c : input.toCharArray()) {
            if (c != ' ') {
                stack.push(c);
            }
        }
        
        // 出栈并与原字符串比较
        for (char c : input.toCharArray()) {
            if (c != ' ' && stack.pop() != c) {
                System.out.println("不是回文");
                return;
            }
        }
        System.out.println("是回文");
    }
}

4. 使用Stack反转一个整数。

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        int number = 12345;
        Stack<Integer> stack = new Stack<>();
        
        // 将整数的每一位数字入栈
        while (number > 0) {
            stack.push(number % 10);
            number /= 10;
        }
        
        // 出栈并组成反转的整数
        int reversedNumber = 0;
        int multiplier = 1;
        while (!stack.isEmpty()) {
            reversedNumber += stack.pop() * multiplier;
            multiplier *= 10;
        }
        
        System.out.println("反转后的整数为:" + reversedNumber);
    }
}

5. 使用栈来判断字符串中的括号是否匹配。

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        String brackets = "{[()]}";
        boolean isBalanced = areBracketsBalanced(brackets);
        System.out.println("括号是否匹配: " + (isBalanced ? "是" : "否"));
    }

    private static boolean areBracketsBalanced(String str) {
        Stack<Character> stack = new Stack<>();
        for (char ch : str.toCharArray()) {
            if (ch == '(' || ch == '[' || ch == '{') {
                stack.push(ch);
            } else if (ch == ')' || ch == ']' || ch == '}') {
                if (stack.isEmpty()) {
                    return false;
                }
                char top = stack.pop();
                if ((ch == ')' && top != '(') || (ch == ']' && top != '[') || (ch == '}' && top != '{')) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值