黑马程序员技术交流社区
标题:
取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
[打印本页]
作者:
饰演自己
时间:
2015-9-27 13:22
标题:
取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,
输出格式为:a(2)b(1)k(2)...
作者:
wangguoxin
时间:
2015-9-27 14:05
使用LinkedHashMap集合(键存字符,值存键的个数 ) ,
遍历字符串取每个字符(用到charAt()方法) ,
遍历过程中判断集合的键中是否包含字符,如果包含 存键,值+1 如果不存在 存键 值为1
然后用StringBuilder 按格式遍历添加
作者:
fmi110
时间:
2015-9-27 16:02
给个黑马币呗
/**
* 需求:统计输入的字符串,如 "abcaab" 以a(3)b(2)c(1)的形式输出
* 分析: 1 字符与字符个数属于对应关系,可用Map<String,Integer>
* 2 输出字母是自然排序,所以考虑使用TreeMap
*/
package fmi1;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class CharacterCount {
public static void main(String[] args) {
// TODO Auto-generated method stub
//建立接收键盘输入的字符串
System.out.println("请输入字符串:");
String line = new Scanner(System.in).nextLine();
//建立集合Map
TreeMap<Character, Integer> tm = new TreeMap<Character,Integer>();
//将输入字符串转成数组
char[] chs = line.toCharArray();
//遍历字符串,将字符存入集合Map,若字符key已存在,则value加1,否则,value = 1
for(char ch:chs ){
//根据键获取集合的值,判断字符的个数
Integer value = tm.get(ch);
if(null == value){//没有对应键值对
value = 1;
}
else
value++;
//将更新后的键值关系存至Map
tm.put(ch, value);
}
//遍历Map,输出键值对
StringBuilder sb = new StringBuilder("");
Set<Character> s = tm.keySet();
for(Character ch:s){
sb.append(ch).append("(").append(tm.get(ch)).append(")");
}
System.out.println(sb.toString());
}
}
复制代码
作者:
zzq18217362451
时间:
2015-9-27 19:49
import java.util.*;
public class MapDemo{
public static void main(String[] args){
//定义一个字符串
String s = "cbxzbvavdvgd";
//转为字符数组
Char[] ch = s.toCharArray();
//定义一个Map集合
Map<Character,Integer> map = new TreeMap<Character,Integer>();
//遍历字符数组
for(char c : ch){
//判断字符是否在集合中
if(map.containsKey(c)){
map.put(c,map.get(c)+1);
}else{
map.put(c,1);
}
}
//遍历集合
Set<Character> set = map.keySet();
//定义一个StringBulider类
StringBulider sb = new StringBuilder();
for(Character cha : set){
//通过键获取值
Integer i = map.get(cha);
sb.append(cha).append("("+i+")");
}
System.out.println(sb);
}
}
作者:
hdy105501
时间:
2015-10-20 23:24
赞一个!
作者:
xiaojunru
时间:
2016-3-14 14:32
import java.util.Arrays; import java.util.HashMap; import java.util.TreeMap; public class Test1 { /** * @param args * *Test1--取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq",输出格式为:a(2)b(1)k(2)... */ public static void main(String[] args) { String s = "abcdekka27qoq"; //定义一个被统计的字符串 String regex = "\\d"; //用正则去掉数字 String s1 = s.replaceAll(regex,""); //abcdekkaqoq char[] arr = s1.toCharArray(); //把字符串转换为字符数组 Arrays.sort(arr); //把字符数组按照字典顺序排序 TreeMap<Character, Integer> hm = new TreeMap<>(); //定义双列集合,存储字符串中字符以及字符出现的次数 //遍历字符数组获取每一个字符,并将字符存储在双列集合中 for (char c : arr) { //把字符数组存储在集合中,如果集合中包含这个键,就将值加1存储 if (!hm.containsKey(c)) { //如果集合中不存在这个键,就将该字符当键,值为1存储 hm.put(c, 1); }else{ hm.put(c, hm.get(c) + 1); } } //打印双列集合获取字符出现的次数 for (Character key : hm.keySet()) { //遍历集合中的所有键,hm.keySet() System.out.print(key + "("+ hm.get(key)+ ")"); //通过键获取值hm.get(key) } } }
作者:
黄盖打周瑜
时间:
2016-3-14 14:42
32000个赞!!
作者:
cuiwenle
时间:
2016-3-26 23:15
做的很好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2