算法-栈(回文数)

简介

栈只能从表的一端存取数据,另一端是封闭的。
在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。
简单实现回文数

Java

import java.util.ArrayList;
public class Ceshi {
    public static void main(String[] args) {
        //栈判断是否是回文数
        //初始化
        String book = "xyyyx";//定义回文数
        int top = 0; //定义栈顶
        int z,mid;
        mid = book.length()/2-1; //获取中间元素下标
        ArrayList arr = new ArrayList();
        //前一半入栈
        for (int i=0;i<=mid;i++){
            arr.add(book.charAt(i));
            top++;
        }
        //判断奇数偶数,获取后半数据第一个字符下标
        if (book.length()%2==0){
            z = mid+1;
        }else {
            z = mid+2;
        }
        //判断是否是回文数
        for (int k=z;k<=book.length()-1;k++){
            if ((char)arr.get(top-1)!=book.charAt(k)){
                break;
            }
            top--;
        }
        if (top == 0){
            System.out.println("是回文数");
        }else {
            System.out.println("不是回文数");
        }
    }
}

 

Python

# 栈 回文数
list = []
str = "xyyx"  # 回文数
top = 0  # 栈顶
z = 0  # 定义有部分第一个值下标
mid = int(len(str) / 2) - 1  # 获取中间值
# 前部分入栈
for i in range(mid + 1):
    list.append(str[i])
    top += 1
if len(str) % 2 == 0:
    z = mid + 1
else:
    z = mid + 2
# 判断
while z <= len(str) - 1:
    if list[top - 1] != str[z]:
        break
    z += 1
    top -= 1
if top == 0:
    print("是回文数")
else:
    print("不是回文数")