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

“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" );
           }    
     }
}

你可能感兴趣的:(堆栈用法示例:判断回文字符串)