動態數組----棧的應用之對稱匹配

迴文判斷

在這裏插入圖片描述

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("不是匹配的");
        }
    }
}

執行結果

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