黑马程序员技术交流社区

标题: 请问以下字符串用什么方法能最快求出来?要求有注释 [打印本页]

作者: yinjiek    时间: 2013-7-25 12:38
标题: 请问以下字符串用什么方法能最快求出来?要求有注释
本帖最后由 yinjiek 于 2013-7-29 14:28 编辑

:求出以下字符串中每个字母出现的次数,如果字母有重复相连的并用其它字符替换掉,再将字符串字母的顺序倒转打印出来;
String str="123213sadfsafdsagdsssdfae4343";


作者: 曹奎    时间: 2013-7-25 13:44
import java.util.HashMap;
public class Test02 {
        public static void main(String[] args) {
                String str="123213sadfsafdsagdsssdfae4343";
                //容器  key是字母  值是字母出现的次数
                HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
                //循环字符串   进行判断计数存储
                for(int i=0;i<str.length();i++){
                        //获得当前循环i下标所对应的字符
                        char ch=str.charAt(i);
                        //获取当前字符是否在容器里面存储过  若存储过返回当前字符出现的当前次数 否则返回null
                        Integer hmch=hm.get(ch);
                        if(hmch!=null){
                                //将当前出现次数+1之后再次存储
                                hm.put(ch, ++hmch);
                        }else{
                                //否则就是没存储过  第一次存储  当前出现次数是1
                                hm.put(ch,1);                               
                        }
                }
                //打印HashMap集合
                System.out.println(hm);
                //将str字符串放入字符串缓冲区
                StringBuffer s=new StringBuffer(str);
                //reverse()方法 就是将字符串反转
                System.out.println(s.reverse());
        }
}
作者: jttsai    时间: 2013-7-25 13:55
import java.util.HashMap;
import java.util.Map;

class Test {
        /**
         * 此方法实现统计字符串中字符个数逻辑,此方法返回Map集合, key为字符,value为字符出现的次数
         */
        public static Map<Character, Integer> countChar(String str) {
                char[] charArray = str.toCharArray(); // 将字符串转换为字符数组
                Map<Character, Integer> map = new HashMap<Character, Integer>(); // 创建map对象用来存放数据
                for (int i = 0; i < charArray.length; i++) { // 遍历该字符数组
                        Character key = charArray[i];
                        Integer va = map.get(key);
                        if (va != null) {
                                va += 1; // 如果作为key的字符前面已经出现过,则出现次数va加1
                        } else {
                                va = 1; // 如果作为key的字符前面没有出现过,则出现次数va为1
                        }
                        map.put(key, va); // 将字符极其出现的次数放进map集合,如果之前有,则覆盖
                }
                return map;
        }

        /**
         * main方法入口
         */
        public static void main(String[] args) {
                String str = "123213sadfsafdsagdsssdfae4343"; // 需要统计的字符串
                Map<Character, Integer> map = countChar(str); // 调用方法
                System.out.println(map);
                // 将str字符串放入字符串缓冲区
                StringBuffer s = new StringBuffer(str);
                // reverse()方法 就是将字符串反转
                System.out.println(s.reverse());
        }
}




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