黑马程序员技术交流社区
标题:
一个字符串操作问题
[打印本页]
作者:
王章亚
时间:
2012-5-30 09:02
标题:
一个字符串操作问题
字符串“yekmaakkccekymbvb”,求出字符串中多少种字符,以及每个字符的个数?
作者:
张晨
时间:
2012-5-30 09:17
很简单,可以用二维数组,也可以用map集合
思路就是读取字符串中每个字符,然后用一个变量保存读取的个数
作者:
张亭
时间:
2012-5-30 09:32
楼主一连问这样两个问题,我觉得应该好好把毕老师的教程再看一看了,都挺简单的
day13-01-String(概述)
day13-02-String(常见功能-获取和判断)
day13-03-String(常见功能-转换)
day13-04-String(常见功能-切割和替换)
day13-05-String(常见功能-比较和去除空格)
day13-06-String(字符串练习1)
day13-07-String(字符串练习2)
day13-08-String(字符串练习3)
day13-09-String(字符串练习4)
day13-10-StringBuffer(常见功能-添加)
day13-11-StringBuffer(常见功能-删除和修改)
day13-12-StringBuilder
作者:
揭耀祖
时间:
2012-5-30 09:36
用map集合来做
实现代码如下:
class Test06
{
public static void main(String[] args)
{
String str = new String("abaaacdefgabcd");
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
char[] arr = str.toCharArray();
int times=0;
int total = 0;
for(char c: arr)
{
for(int i = 0;i<arr.length;i++)
{
if(c==arr)
times++;
}
tm.put(Character.valueOf(c),Integer.valueOf(times));
times=0;
}
StringBuilder strb = new StringBuilder();
Set<Character> ts = tm.keySet();
Iterator<Character> it = ts.iterator();
while(it.hasNext())
{
Character key = (Character)it.next();
total++;
Integer value = (Integer)tm.get(key);
strb.append(key+"("+value+")");
}
System.out.println(strb.toString()+"总共"+total+"种字符");
}
}
作者:
黑马—陈磊
时间:
2012-5-30 09:45
public static void main(String[] args) {
String str = "yekmaakkccekymbvb";
Map<String,Integer> map=new HashMap<String,Integer>();
//循环取值放入map中
for (int i = 0; i < str.length(); i++) {
Integer value=1;
if(map.containsKey(str.substring(i, i + 1)))//当已存在值时加1
{
value=map.get(str.substring(i, i + 1));
value=value+1;
}
map.put(str.substring(i, i + 1),value);
}
System.out.println("字符长度:"+str.length());
//根据KEY值遍历
for(String key:map.keySet())
{
System.out.println("字符:"+key+",次数:"+map.get(key));
}
}
作者:
吴小东
时间:
2012-5-30 10:27
也可以用面向对象的思想,创建一个元素类,包括元素值和元素个数。
创建一个List集合用于存放元素类的对象。
然后用charAt()循环遍历字符串 ,比较charAt()方法得到的元素值与List集合中的对象的元素值
如果没有就新建一个元素类对象,set 元素个数为1,如果存在就set 个数=元素个数+1;
最后对List中的元素进行取你需要的值。
作者:
凡延海
时间:
2012-5-30 13:27
我也写了一个我程序,我取了个巧是按照输入的字符串全是英文字母来写的,以这些英文字母作为基本字符,取出一个通过for操作与输入的字符全比较一遍统计出来。程序如下:
public class CountTest
{
public static void main(String[] args)
{
String str="abddsscdr";
countSort(str);
}
public static void countSort(String str)
{
char[] chs=str.toLowerCase().toCharArray();
char[] basechars=new char[26];
int count=0;
for(int i=0;i<26;i++)
{
count=0;
basechars[i]=(char)(97+i);
for(char ch:chs)
{
if(basechars[i]==ch)
{
count++;
}
}
if(count>0)
{
System.out.println(basechars[i]+":"+count);
}
}
}
}
复制代码
打印结果是:
a:1
b:1
c:1
d:3
r:1
s:2
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2