动态数组----栈的应用之对称匹配

回文判断

在这里插入图片描述

import java.util.Scanner;

public class JudgingPalindrome {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要判断的内容");
        String text=scanner.nextLine();

        ArrayStack<Character> stack=new  ArrayStack<Character>();
        char c;
        for(int i=0;i<text.length();i++){
            if(text.length()%2==1&&i==text.length()/2){
                continue;
            }
            c=text.charAt(i);
            if(stack.isEmpty()) {
                stack.push(c);     //如果栈为空直接进
            }else{
                if(c==stack.peek()){    //看栈顶否和当前字符c相等
                    stack.pop();     //相等 相消
                }else{
                    stack.push(c);    //不相等  直接进
                }
            }
        }
        if(stack.isEmpty()){
            System.out.println("这是一个回文");
        }else{
            System.out.println("这不是一个回文");
        }
    }
}

执行结果

请输入要判断的内容
13431
这是一个回文

括号匹配

在这里插入图片描述

public class MatchBracket {
    public static void main(String[] args) {
        String text="{}";
        ArrayStack<Character> stack=new ArrayStack<Character>();
        char c;
        char top;
        for(int i=0;i<text.length();i++){
            c=text.charAt(i);
            if(stack.isEmpty()){
               stack.push(c);
            }else{
                top=stack.peek();
                if(top-c==-1||top-c==-2){
                    stack.pop();
                }else{
                    stack.push(c);
                }
            }
        }
        if(stack.isEmpty()){
            System.out.println("他是匹配的");
        }else{
            System.out.println("不是匹配的");
        }
    }
}

执行结果

他是匹配的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章