这个题我做过!东拼西凑把它做出来了,可能不是很好。
- import java.util.Set;
- import java.util.TreeSet;
- public class Test03 {
- public static void main(String[] args) {
- String str = "abcdekka27qoq";
- characterCount(str);
- }
-
- private static void characterCount(String str){
- //由于要取出字符串中字母出现的次数,所以要将字符串中的数字去掉;
- str = str.replaceAll("\\d", "");
- //获取没有重复字符的字符串;
- String str1 = singleCharacter(str);
-
- //从没有重复字符串的第一个字符开始查找在原串中的个数;
- for(int i=0; i<str1.length(); i++){
- int count = getCount(str, str1.charAt(i));
- System.out.print(str1.charAt(i) + "(" + count + ")");
- }
- }
-
- //该方法用来查找每个字符在字符串中出现的次数
- private static int getCount(String str,char key){
- int count = 0;
- int index = 0;
-
- //查找字符是否在字符串中存在,如果存在则计数器加1;不存在则退出循环;index记录查找到的字符出现的位置;
- while((index=str.indexOf(key)) != -1){
- //每查找到一个与key相同的字符后,下一次将从该位置起的下一个字符串开始查找;
- str = str.substring(index+1);
- count++;
- }
- return count;
- }
-
- //定义一个方法让去掉字符串中重复的元素;
- private static String singleCharacter(String str){
- //将字符串变成字符数组;
- char[] array = str.toCharArray();
- StringBuffer sb = new StringBuffer();
- //定义一个TreeSet集合,字符数组中的元素存入到集合中;以便去掉重复元素;
- Set<Character> ts = new TreeSet<Character>();
- for(int i=0; i<array.length; i++){
- ts.add(array[i]);
- }
- for(char c: ts){
- sb.append(c);
- }
- //将得到的符变成字符串返回;
- return sb.toString();
-
- }
- }
复制代码
|