首页 > 其他 > 详细

基础-栈数据结构

时间:2019-07-06 23:04:20      阅读:125      评论:0      收藏:0      [点我收藏+]

栈:只能先进后出,被限定为只能在一端进行插入和删除操作,可以用来验证字符串是否是回文序列

package com.nxz.blog.otherTest;

import java.util.Stack;

public class Test01 {

    public static void main(String[] args) {
        testStack("ahha啊k1k啊ahha");
        testStack("ahha啊kk啊ahha");
        testStack("ahha啊kk1啊ahha");
    }

    /**
     * 判断是否是回文序列
     * 关键点是获取mid节点,判断mid之前和之后是否是对应的
     *
     * @param str
     */
    public static void testStack(String str) {

        int mid = str.length() / 2;
        Stack stack = new Stack();
        //将中间节点之前的数据入栈
        for (int i = 0; i < mid; i++) {
            stack.push(str.charAt(i));
        }

        //后序节点的起始索引需要进行处理,整个字符串为奇数个则next为mid,否则为mid+1
        int next = 0;
        if (str.length() % 2 == 0) {
            next = mid;
        } else {
            next = mid + 1;
        }
        //将中间节点之后的数据和出栈之后的数据比较,同则继续,不同则表示不是回文
        for (int i = next; i < str.length(); i++) {
            if (str.charAt(i) != (char) stack.pop()) {
                System.out.println("不是");
                return;
            }
        }
        System.out.println("是");

    }
}

输出结果:

是
是
不是

 

基础-栈数据结构

原文:https://www.cnblogs.com/nxzblogs/p/11143633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!