实现回文字符串判断 -- JAVA 算法学习

大一的时候老师上课的经典例子就是回文字符串判断,我觉得经典,也保留了下来。
很简单的判断,即字符串从前往后输出和从后往前输出都是一样的结果。是不是想到了什么,没错,就是栈(FIFO),用这个就可以很好的解决这个问题啦~
public class HuiWenString {
       public String isHuiWen(String string ){
             int mid ;
             int top =0;
             char [] charOne ;
             if ( string .length()==1)
                   return "Yes" ;
                   mid = string .length()/2;
             charOne = new char [ mid ];
            //System. out .println( "mid=" + mid );
             for ( int i = 0; i < mid ; i ++){
                   charOne [ i ]= string .charAt( i );
                   top ++;
            }
             top --;
                   //charOne[top] = string.charAt(top);
                   //charOne[i-1] = string.charAt(i-1);
           //System. out .println( "top=" + top );
           //  for ( int i =0; i < charOne . length ; i ++)
            //System. out .println( "char=" + charOne [ i ]);
             if ( string .length()%2==0){
                  System. out .println( "s-mid=" + string .charAt( mid )+ "c-top=" + charOne [ top ]);
                  System. out .println( string .charAt( mid )!= charOne [ top ]);
                   if ( string .charAt( mid )!= charOne [ top ]){
                         return "NO1" ;
                  } else {      
                         top --;
                   for ( int j = mid +1; j < string .length()-1; j ++)
                         if ( string .charAt( j )!= charOne [ top --])
                               return "NO2" ;
                  }
                   return "YES" ;
            } else
                   for ( int k = mid +1; k < string .length()-1; k ++)
                         if ( string .charAt( k )!= charOne [ top --])
                         return "NO3" ;
             if ( top ==0)
             return "YES" ;
             return "Error" ;
      }
       public static void main(String[] args ) {
            Scanner scanner = new Scanner(System. in );
            System. out .println( "请输入待判断的字符串:" );
            String string = scanner .nextLine();
            HuiWenString huiWenString = new HuiWenString();
            System. out .println( huiWenString .isHuiWen( string ));
            
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值