黑马程序员技术交流社区
标题:
这个怎么解?
[打印本页]
作者:
张丽
时间:
2012-10-8 09:11
标题:
这个怎么解?
定义一个字符串"lsjif___siieaase__awiup__cbsk"按照这样的格式获取字符串中元素出现的的个数。字母(数字),字母(数字).......
作者:
武庆东
时间:
2012-10-8 09:17
使用正则表达式!
作者:
古银平
时间:
2012-10-8 09:46
package day16;
import java.util.*;
class MapTest {
public static void main(String[] args)
{
String str = "sdfgzxc=a&va+sdfxcvdf";
String s = charCount(str);
System.out.println(s);
}
public static String charCount(String str)
{
char[] chs = str.toCharArray();
TreeMap<Character, Integer> tm =new TreeMap<Character,Integer>();
for(int x = 0;x<chs.length;x++)
{
int count = 0;
if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'))//判断只记录字母
continue;
Integer value = tm.get(chs[x]);
if(value!=null)
count = value;
count++;
tm.put(chs[x],count);
}
StringBuilder sb =new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me =it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch+"("+value+")");
}
return sb.toString();
}
}
复制代码
我用Map集合写的,你看看吧
作者:
舒远
时间:
2012-10-8 10:17
public static void main(String[] args) {
String string = "lsjif___siieaase__awiup__cbsk";
string = string.replaceAll("[^a-zA-Z]", "");
System.out.println(string);
Map<Character, Integer> map = new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return o1 - o2;
}
});
for (char c : string.toCharArray()) {
Integer i = map.get(c);
map.put(c, i == null || i == 0 ? 1 : ++i);
}
Set<Map.Entry<Character, Integer>> set = map.entrySet();
Iterator<Map.Entry<Character, Integer>> iterator = set.iterator();
while (iterator.hasNext()) {
Entry<Character, Integer> e = iterator.next();
System.out.println(e.getKey() + "(" + e.getValue() + ")");
}
}
复制代码
简单实现了一下
作者:
唐增友
时间:
2012-10-8 11:10
public class GetCharNumber {
public static void main(String[] args) {
String string="lsjif___siieaase__awiup__cbsk";
int l=string.length();
HashMap map =new HashMap();
//取出字符串中所有字符 , 将数量存到 map 中
for(int i=0;i<l;i++){
String s=string.substring(i, i+1);
Integer value =(Integer)map.get(s);
if(value==null){
map.put(s, 1);
}else{
map.put(s, value+1);
}
}
//获取字符数量
Set set=map.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()){
String key=it.next();
System.out.print(key+"("+map.get(key)+"),");
}
}
}
复制代码
运行结果:f(1),e(2),b(1),c(1),a(3),l(1),j(1),k(1),i(4),w(1),u(1),s(4),p(1),_(7),
作者:
唐增友
时间:
2012-10-8 11:14
发现楼上那位代码更精练
作者:
杨华东
时间:
2012-10-8 11:18
public class GetCharNumber {
public static void main(String[] args) {
String string="lsjif___siieaase__awiup__cbsk";
int len=string.length();
HashMap map =new HashMap();
//取出字符串中所有字符 , 将数量存到 map 中
for(int i=0;i<len;i++){
String s=string.substring(i, i+1);
Integer value =(Integer)map.get(s);
if(value==null){
map.put(s, 1);
}else{
map.put(s, value+1);
}
}
//获取字符数量
Set set=map.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()){
String key=it.next();
System.out.print(key+"("+map.get(key)+"),");
}
}
}
作者:
陈俊来
时间:
2012-10-8 15:43
我用的方法可能和你们的不太一样。
//定义一个字符串
String str = "lsjif___siieaase__awiup__cbsk";
//定义一个HashMap变量
HashMap<String,Integer> map = new HashMap<String,Integer>();
for(int i=0;i<str.length();i++){
//取得当前位置的字母.
String subString = str.substring(i,i+1);
//当map中key没有此位置的字母时,填充进去key为字母value为数字
if(!map.containsKey(subString)){
//取得字母出现的次数
String[] sum = str.split(subString);
map.put(subString, (Integer)(sum.length-1));
}
}
//输出HashMap的值
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext()){
Map.Entry<String, Integer> mp = (Entry<String, Integer>) it.next();
System.out.println(mp.getKey()+"("+mp.getValue()+")");
}
作者:
唐增友
时间:
2012-10-8 17:27
和我的思路一样的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2