掌中招聘网 » 掌中论坛 » 全部 »   JAVA编程题
首页 上一页 下一页 尾页 
 本页主题:   JAVA编程题
 


李小凤

积分:60
发表主题:56




 发表于 2009-06-23 17:20 资料
楼主

JAVA编程题:字符串"yekmaakkccekymbvb",求出字符串中有多少种字符,以及每个字符的个数?
回复1: 可以使用HashMap存储,对该字符串进行遍历。如果遍历的字符在Map中,则将Map中的数值取出来加1。如果没有则放进去。
回复2: 楼上说的不错,你自己看看API把它搞定吧,不难的.
回复3: 全是abcd之类的吗?
那不就26个字母么,遍历对比下就OK了啊。
回复4: 接分
回复5:
Java code
import java.util.*; import java.util.Collections; public class LetterCount { public void getLetterCount(String str) { ArrayList<String> lists = new ArrayList<String>(); HashSet<String> hset = new HashSet<String>(); char[] ss = str.toCharArray(); for(int i=0; i<ss.length; i++) { lists.add(String.valueOf(ss[i])); hset.add(String.valueOf(ss[i])); } System.out.println("共有字母"+hset.size()+"个!"); Collections.sort(lists); Iterator it = hset.iterator(); while(it.hasNext()) { String os = (String)it.next(); int begin = lists.indexOf(os); int last = lists.lastIndexOf(os); int count = last-begin+1; System.out.println("字母"+os+": 共"+count+""); } } public static void main(String[] args) { LetterCount lc = new LetterCount(); lc.getLetterCount(args[0]); } }


我的运行结果:
D:backupmyclass>java LetterCount yekmaakkccekymbvb
共有字母8个!
字母k: 共4个
字母m: 共2个
字母a: 共2个
字母c: 共2个
字母y: 共2个
字母b: 共2个
字母v: 共1个
字母e: 共2个

解决后,请结贴!
回复6: 看了也学到了
回复7: public class LetterCount
{
public static void main(String[] args)
{
HashMap <String, Integer> map = new HashMap();
String str = args[0];
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
String key = ch + "";
Integer count = map.get(ch + "");
map.put(key, map.get(key) == null ? 1 : ++count);
}
Set <String> set = map.keySet();
System.out.println("共有字母"+map.size()+"个");
for (String key : set) {
System.out.println("字母" + key + ":共" + map.get(key) + "个");
}

}
}

回复8: 这个简单点
回复9: 在别的语言里,好想就不太好办 了吧,
回复10: 这道题目应该不只是考运算吧,我觉得是考效率的。

如果按照楼上的办法,用map,效率应该是n*n。
如果是我做,我想到的方法是,把a-Z作为26+26=52的数组a=[0,0,0,0,0,0,0,0,0,0,0...]
然后遍历字符串,对于每个数都减去a得到ASCII值,对应相加,例如:
a[c-a]=a[2]+1=1
所以:a=[0,0,1,0,0,0...],遍历字符串可以得到个数。
再取出就好了。
时间复杂度为n而已,快了一倍,呵呵!~

不知道有没有更好的办法呢?
回复11: package com.string;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class StringL {

private HashMap <String,Integer> hashMap = new HashMap <String,Integer>();

public void getString(String s){

String str ;

for(int i=0;i <s.length();i++){

str = s.substring(i,i+1);
if(hashMap.containsKey(str)){
int j=hashMap.get(str);
hashMap.remove(str);
hashMap.put(str, j+1);
}else{
hashMap.put(str, 1);

}


}
}

public void getHashMap(){

Set <String> strings = hashMap.keySet();

Iterator <String> it = strings.iterator();

for(String ss:strings){
ss = it.next();
System.out.println(ss+":"+hashMap.get(ss));
}

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringL  sl =new StringL();
sl.getString("yekmaakkccekymbvb");
sl.getHashMap();
}

}
回复12: string str = "89kds7f8sdfsjdfklds8f7sd7ufjsdf";
while (str.Length > 0)
{               
    System.out.println(string.Format("{0}:{1}个",str[0],str.Length-str.Replace(str[0].ToString(),"").Length));
    str = str.Replace(str[0].ToString(), "");
}

回复13: lz可以把所有能运行的方法都收藏...
Java code
public class NetWork1 { public static void main(String[] args) { while(true){ System.out.println("请输入你的字符串:"); BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try { String str=reader.readLine(); count(str); } catch (IOException e) { e.printStackTrace(); } } } public static void count(String str) { Map<Character ,Integer> m=new TreeMap<Character,Integer>(); char[] chars = str.toCharArray(); for (char c : chars) { Integer num=m.get(c); num=(num==null)?num=1:++num; m.put(c, num); } System.out.println("字符的种类:"+m.size()); Set<Character> set=m.keySet(); for(Character ch:set){ System.out.println("字符"+ch+""+m.get(ch)+""); } } }

回复14: 顶
学习了
回复15: 学习
回复16: 顶一个 学习了
回复17: 学习!
回复18: 学习!

首页 上一页 下一页 尾页 
 各地招聘导航
·北京 ·天津 ·上海
·西安 ·东莞 ·广州
·深圳 ·南京 ·杭州
·济南 ·南昌 ·兰州
·合肥 ·长沙 ·武汉
·成都 ·重庆 ·太原
·福州 ·沈阳 ·南宁
·海口 ·贵阳 ·郑州
·银川 ·西宁 ·昆明
·拉萨 ·长春
·石家庄  ·乌鲁木齐
·哈尔滨  ·呼和浩特
 各地兼职导航
·北京 ·天津 ·上海
·西安 ·东莞 ·广州
·深圳 ·南京 ·杭州
·济南 ·南昌 ·兰州
·合肥 ·长沙 ·武汉
·成都 ·重庆 ·太原
·福州 ·沈阳 ·南宁
·海口 ·贵阳 ·郑州
·银川 ·西宁 ·昆明
·拉萨 ·长春
·石家庄  ·乌鲁木齐
·哈尔滨  ·呼和浩特