黑马程序员技术交流社区

标题: 判断字符串数组里面的字符是否对称解题思路 [打印本页]

作者: IT_china    时间: 2016-4-2 12:51
标题: 判断字符串数组里面的字符是否对称解题思路
今天上自习做了一个题,感觉这道题不错,特写出来与给位分享一下思路,给位有更好的思路回复讨论。
题目是这样的:
(1)定义数字字符串数组{"010","3223","666","7890987","123123"}
        (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出
        (3)如:010 是对称的,3223 是对称的,123123 不是对称的

代码:
public class Demo_01 {
        public static void main(String[] args) {
                String[] s = {"010","3223","666","7890987","123123"};
                String s1 = "";
               
                for(int i=0;i<5;i++) {                      //第一层for循环把字符串数组转换成字符串
                         s1 = s[i];
                         char[] c2 =new char[s1.length()];
                        //System.out.println(s1);
                         for(int j=0;j<s1.length();j++) {      // 这层for循环把字符串转换成字符数组
                                char c = s1.charAt(j);
                                c2[j] = c;
                                //System.out.print(c + " ");
                        }
                        for(int k=0;k<c2.length/2;k++) {      // c2.length/2是判断的次数,
                                if(c2[k] == c2[c2.length-1-k]) {
                                        if(k==c2.length/2-1) {
                                                print(c2);
                                                System.out.println("是对称的");
                                        }
                                }else {
                                        print(c2);
                                        System.out.println("不是对称的");
                                        break;
                                }
                        }
                }
        }
        public static void print(char[] arr) {            //遍历字符数组
                for(int i=0;i<arr.length;i++) {
                        System.out.print(arr[i]);
                }
        }

}


做这道题的思路就是首先得把字符串数组成字符串,然后把字符串转换成字符数组用到String的charAt();方法,
在把字符串转换成字符数组char c = s1.charAt(j);在做判断  。






作者: 菊花爆满山    时间: 2016-4-2 13:41
有点麻烦 用字符串缓冲区简单点
  1. package com.heima.demo;

  2. public class Demo {

  3.         public static void main(String[] args) {
  4.                 String[] strArr = {"010", "3223", "666", "7890987", "123123"};
  5.                 StringBuilder sb = null;
  6.                 for(String str : strArr) {
  7.                         sb = new StringBuilder(str);
  8.                         if(sb.reverse().toString().equals(str))
  9.                                 System.out.println(str + "是对称的");
  10.                 }
  11.         }
  12. }
复制代码

作者: IT_china    时间: 2016-4-2 17:49
谢谢 ,暂时还没学到,不过感谢分享知识
作者: IT_china    时间: 2016-4-2 17:56
菊花爆满山 发表于 2016-4-2 13:41
有点麻烦 用字符串缓冲区简单点

谢谢,暂时还没学到,感谢指点
作者: sunjunlong    时间: 2017-9-10 13:43
不用转换,直接遍历比较
[Java] 纯文本查看 复制代码
public static void function(String[]s){
                for(int i=0;i<s.length;i++){
                        for(int j=0;j<s.length();j++){
                                if(s.charAt(j)!=s.charAt(s.length()-j-1)){
                                        break;
                                }
                               
                                if(j==(s.length())/2-1)
                                        System.out.println(s);
                        }
                       
                }







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