A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 yinjiek 于 2013-7-29 14:28 编辑

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

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

2 个回复

正序浏览
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());
        }
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

回复 使用道具 举报
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());
        }
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马