黑马程序员技术交流社区

标题: 基础测试题 之 回文字符串 [打印本页]

作者: hyace    时间: 2014-3-21 23:37
标题: 基础测试题 之 回文字符串
本帖最后由 hyace 于 2014-3-21 23:41 编辑

最近几天开始申请的步骤,之前一直用的是C/C++,Java只是基础的掌握而已,写出来的代码不一定够规范正确,所以我想发到这里请大家参详,希望能够指正,谢谢~
2、 判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
  1. package com.itheima;
  2. /**
  3. * 2、 判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
  4. * @author Hyace
  5. *
  6. */
  7. import java.util.Scanner;

  8. public class Test2 {
  9.     public static void main(String[] args){
  10.         //从键盘输入
  11.         Scanner inp = new Scanner(System.in);
  12.         String s = inp.next();
  13.         System.out.println(pal(s));
  14.         }
  15.    
  16.     public static boolean pal(String str){
  17.         //定义字符串长度
  18.         int n = str.length();
  19.         //以下对str进行转置,存入temp中,比较str和temp,如果相等则返回true,否则返回false
  20.         String temp = "";
  21.         for(int i = 0;i<n;i++){
  22.                 temp+=str.charAt(n-1-i);        
  23.                 }
  24.         if(temp.equals(str)) return true;
  25.         else return false;
  26.     }

  27. }
复制代码



作者: 李东梁    时间: 2014-3-22 19:42
循环中不应该小于n吧,应该小于n/2吧
作者: hyace    时间: 2014-3-22 21:00
李东梁 发表于 2014-3-22 19:42
循环中不应该小于n吧,应该小于n/2吧

倒序复制一遍啊,n/2,复制出来是个啥
作者: 我感觉优势很大    时间: 2014-3-23 17:38
感觉不用这么麻烦的,你看看我的这个怎么样?
  1. //读取键盘
  2.             BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  3.            
  4.             String line=null;
  5.            
  6.             while((line=bufr.readLine())!=null)
  7.             {
  8.                     if("over".equals(line))
  9.                             break;
  10.                     StringBuilder sb=new StringBuilder(line);
  11.                     sb=sb.reverse();
  12.                     //如果反转后的字符和原来的字符相同,就是回文字符串了
  13.                     if(line.equals(sb.toString()))
  14.                             System.out.println("这个是回文字符串--->源为:"+line+",反转后的为:"+sb.toString());
  15.                     else
  16.                             System.out.println("这个不是回文字符串--->源为:"+line+",反转后的为:"+sb.toString());
  17.            
  18.             }
  19.            
  20.             bufr.close();
复制代码

作者: hyace    时间: 2014-3-23 21:08
我感觉优势很大 发表于 2014-3-23 17:38
感觉不用这么麻烦的,你看看我的这个怎么样?

恩谢谢~我还没接触到reverse等等,所以得自己手工来~
作者: tcny    时间: 2014-3-25 21:43
代码真的不需要那么多。看看我的。i 从头开始遍历,j 从后开始遍历, 循环条件是 i < j
  1. public class Testt {

  2.         public static void main(String[] args) {

  3.                 Scanner in = new Scanner(System.in);
  4.                 System.out.println(isHui(in.next())) ;
  5.         }

  6.         public static boolean isHui(String str){
  7.                 for(int i = 0, j = str.length()-1; i < j; i++, j--){ //分别从两头开始比较,同步向中间靠拢
  8.                         if(str.charAt(i) != str.charAt(j)){
  9.                                 return false;
  10.                         }
  11.                 }
  12.                 return true;
  13.         }
  14. }
复制代码

作者: bjfanxc    时间: 2014-3-26 19:54
哥们,你插代码的时候,格式怎么调的
作者: hyace    时间: 2014-3-26 22:38
bjfanxc 发表于 2014-3-26 19:54
哥们,你插代码的时候,格式怎么调的

不需要调啊,你什么情况
作者: bjfanxc    时间: 2014-3-27 13:59
hyace 发表于 2014-3-26 22:38
不需要调啊,你什么情况

我那个不自动缩进!
作者: hyace    时间: 2014-3-28 22:20
bjfanxc 发表于 2014-3-27 13:59
我那个不自动缩进!

我直接复制进来就好了啊。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2