栈算法 --判断回文--java

队列:先进先出    如:排队

栈:先进后出    如:弹夹,在装子弹的时候,最后装的一发子弹,是被第一个打出去的。

所谓回文字符串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“aha”和“ahaha”均是回文,但“ahah”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文

思路:找到回文的中心点,把前半部分放到新的数组中,然后判断新的数组的部分和回文后半部分是否相同

class HuiWen{
    public static void main(String[] args) {
        char[]  lenStr ={'A', ':', ':','A'};  //   需要判断的回文
        int top = 0 ;
        char[] s = new char[101]; //定义的一个数组
        int next;
        int mid = lenStr.length/2-1;//找到回文的中心点
        for(int i = 0 ;i<=mid; i++){
        //把回文的前部分放到新的数组中
            s[++top] = lenStr[i] ; 
        }
        //判断字符长度是奇数还是偶数,并找出需要进行字符匹配的起始下标
        if(lenStr.length%2 == 0){ 
                next = mid+1;
        }else {
                next = mid+2;
        }
        //    开始匹配
        for(int n = next; n<=lenStr.length-1; n++){
            if(lenStr[n] != s[top]){
                break;
            }else {
                top--;
            }
        }
        //如果top的值为0,则说明栈内的所有的字符都被一一匹配了
        if(top == 0){
            System.out.println("YES");
        }else {
            System.out.println("NO");
        }
    }

}

猜你喜欢

转载自blog.csdn.net/wang0112233/article/details/108145444