黑马程序员技术交流社区

标题: 一个String的面试题 [打印本页]

作者: 726477179    时间: 2016-8-12 15:54
标题: 一个String的面试题
昨天问的问题没有人回复,今天自己写了一个程序,但是感觉好臃肿,有没有其他改进方式的?(集合还没学,以一个大数组代替了{:2_31:})
需求如下:
从控制台接收一串字符串,完成以下要求 (共10分)
  a,求出该字符串的长度并输出到控制台,如字符串长度为:X
  b,将该字符串转为数组,判断该数组第一个字符和最后一个字符是否相同,不相同则交换
  c,统计出数组中的每个字符出现的次数,然后自然排序后按指定格式输出到控制台,如  a=3,b=4,c=4,d=3,e=2,f=1
  d,将第二步互换后的数组角标为奇数的字符用”*”号替换,然后遍历输出
        private static void String8() {
                Scanner sc = new Scanner(System.in);
                String s = sc.nextLine();
                char[] c = s.toCharArray();
                System.out.println("字符串长度为:" + c.length);//完成需求a
                if (c[0] == c[c.length - 1]) {                               
                        System.out.println("第一个元素与最后一个元素相同");
                } else {
                        char temp;
                        temp = c[0];
                        c[0] = c[c.length - 1];
                        c[c.length - 1] = temp;
                        System.out.println("第一元素与最后一个元素不同,现已交换");//完成需求b
                }
                int i = 0;
                int a = 0;
                char[] cc = new char[1000];
                int[] aa = new int[1000];
                a: while (i < c.length) {
                        for (int j = 0; j <= i; j++) {             //判断是否是前面出现过的字符,是就该字符对应的计数器+1
                                if (c[i] == cc[j]) {
                                        aa[j]++;
                                        i++;
                                        continue a;
                                }
                        }                                                                        //否则该字符交给另外字符数组的新元素,并让其所对应的计数器+1
                        cc[a] = c[i];
                        aa[a++] = 1;
                        i++;
                }
                for (int j = 0; j < a; j++) {                                //输出需求c
                        System.out.print(cc[j] + "个数是:" + aa[j] + "    ");
                }
                System.out.println();
                for (int j = 1; j < c.length; j += 2) {
                        c[j] = '*';
                }
                for (int j = 0; j < c.length; j++) {                        //需求d
                        System.out.print(c[j] + " ");
                }
        }
作者: luliang    时间: 2016-8-12 22:42
哭晕在在厕所




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