堆栈用法示例:判断回文字符串

“xyxzyx”是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,通过栈这个数据结构判断一个字符串是否是回文字符串。

输入:xyzyx
输出:yes

示例代码如下:

import  java.util.Scanner;

public  class  ExampleJiemiHuiwen {

      public  static  void  main(String[] args) {
           String str =  new  String();
           Scanner cin =  new  Scanner(System.  in );
           str = cin.next();
           cin.close();

             char  a[] = str.toCharArray();
             int  len = a.  length ;
             int  mid;

           mid = len / 2 - 1;  // mid不是中点的下标,而是需要进栈的最后一个字符的下标

             // 堆栈
             char  stack[] =  new  char [101];
             int  top = -1;
             for  (  int  i = 0; i <= mid; i++) {
                top++;
                stack[top] = a[i];
           }

             // 开始匹配
             int  next;  //next表示待测字符数组后半段需要进行字符匹配的初始下标
             if  (len % 2 == 0) {
                next = mid + 1;
           }  else  {
                next = mid + 2;
           }
           
             for  (  int  i = next; i < len; i++) {
                  if (stack[top] == a[i]){
                     top--;
                }
                  else {                
                       break ;
                }
           }
           
             //栈空的标志是top==1,如果栈空了,则说明栈内所有的字符被一一匹配了
             if  (top == -1) {
                System.  out .println(  "yes" );
           }  else  {
                System.  out .println(  "no" );
           }    
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值