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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
* 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
* 输出格式为:a(2)b(1)k(2)...
*
* 思路;将重复的字母和数字去掉形成新的字符串,将新的字符串按每一个字母为一个字符去和原字符串
* 进行比较,
*
*
*/

请问有什么不妥?

package com.itheima;

import java.util.LinkedHashSet;

class Test1{

        public static int getCount(String str,int chr){//利用2个字符串间的关系得出重复的数
                int count=0;
                int index=0;
           //
                        while((index=str.indexOf(chr,index))!=-1){
                                index=index+1;//针对单个字符串的
                                count++;//计数器
                        }
                 return count;

        }
       
        public static void main(String[] args) {
                String str = "abcdekka27qoq";//字符串
                char[] buf = str.toCharArray();//转成字符数组
               
                LinkedHashSet<Character> set=new LinkedHashSet<Character>();
                for(Character chr:buf){
                        set.add(chr); //利用集合特性去除重复字符元素 按原字符串的字幕出现先后
                }
                Character [] arr=set.toArray(new Character[0]);//集合转成字符数组
          

                 for (int i = 0; i < arr.length; i++) {
                         
                         if (arr[i]>= 'a' &&  arr[i]<= 'z' || arr[i] >= 'A' && arr[i] <= 'Z') {//判断是够是字母,将其它排除
                         
                               System.out.print( arr[i]+"("+getCount(str, arr[i])+")");//按要求输出结果
                         
                        }
    }
                 
                       
                       
                       
                 }
                 
                 
}

6 个回复

倒序浏览
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class StringTest {
public static void main(String[] args) {
                        String s="abcdefabced";
                        char[] ch=s.toCharArray();
                        TreeMap<Character,Integer> hm = new TreeMap<Character,Integer>();
                       
                        for(int x=0;x<ch.length;x++)
                        {
                                Character c=ch[x];
                                Integer value=hm.get(c);
                                if(value!=null)
                                {
                                   //键相同 那么把值+1就ok
                                        value=value+1;
                                        hm.put( c,value);
                                       
                                }
                                else
                                {//如果为空值就存1
                                        hm.put(c, 1);
                                }
                        }
                                Set<Map.Entry<Character, Integer>> set = hm.entrySet();
                                Iterator<Map.Entry<Character, Integer>> it = set.iterator();
                                while (it.hasNext()) {
                                        Map.Entry<Character, Integer> me = it.next();
                                        Character key = me.getKey();//键
                                        Integer valu = me.getValue();//值得取出
                                        System.out.print(key + "(" + valu + ")");// 按规定的格式输出
                                }
                               
                        }
}
回复 使用道具 举报
学习一下
回复 使用道具 举报
学习了,感谢分享
回复 使用道具 举报
1楼的思路很好,利用TreeMap集合存储字符和对应字符串出现的次数,然后取出Map中的元素,用StringBuileder类连接
回复 使用道具 举报
不错学习了。
回复 使用道具 举报
写的不错,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马