黑马程序员技术交流社区

标题: 统计字符串中每个字符出现的次数,求解 [打印本页]

作者: 七宝    时间: 2013-8-17 01:46
标题: 统计字符串中每个字符出现的次数,求解
本帖最后由 七宝 于 2013-8-17 23:58 编辑

统计字符串中每个字符出现的次数?怎么样统计,字符串键盘输入
求大神代码演示

作者: 王松松    时间: 2013-8-17 02:57
重要的是思路:
1,输入字符串
2,将字符串转为字符数组
3,定义一个Map集合,存入字符和对应的次数
4,遍历字符数组
   a,将字符和Map集合中的key值比较

作者: 王松松    时间: 2013-8-17 03:03
哇擦,没写完就提交了,接着。
  b,如果Map集合没有字符,则返回null,将字符存入Map集合,值为1
   c,如果有则,存入字符,值为原值加1;
  d,遍历Map集合,获取Map集合迭代器,取出key和value,即字符和对应的次数。
  e,定义一个StringBuilder容器,添加取出的key和value到容器中。
最后打印容器Over。

希望对你有帮助!朋友,代码需要自己敲的。
作者: panningwjr    时间: 2013-8-17 13:40
思路和上面差不多,代码如下,供楼主参考
  1. public static void main(String[] args) {
  2.                 method_1();
  3.         }

  4.         public static void method_1() {
  5.                 String str = "abbcccddddeeeee";
  6.                 char maxKey = 0;// 出现次数最多的字符
  7.                 int maxValue = 0;// 出现次数最多的字符的出现次数
  8.                 // 字符串转换成数组
  9.                 char[] i = str.toCharArray();
  10.                 Map<Character, Integer> m = new HashMap<Character, Integer>();
  11.                 // 循环遍历数组中的元素,将对应关系存入map集合中
  12.                 int value = 0;
  13.                 for (int x = 0; x < i.length; x++) {
  14.                         // 如果字符已经存在集合中了,个数就加1
  15.                         if (m.containsKey(i[x])) {
  16.                                 value = m.get(i[x]) + 1;
  17.                         } else {
  18.                                 value = 1;
  19.                         }
  20.                         m.put(i[x], value);
  21.                 }
  22.                 System.out.println(m.toString());
  23.                 // 使用迭代器遍历map集合,按要求取出需要的数据
  24.                 Set<Character> s = m.keySet();
  25.                 Iterator<Character> it = s.iterator();
  26.                 while (it.hasNext()) {
  27.                         // 获得key值
  28.                         char j = it.next();
  29.                         // 取出出现次数最多的字符
  30.                         if (m.get(j) > maxValue) {
  31.                                 maxKey = j;
  32.                                 maxValue = m.get(j);
  33.                         } else if (m.get(j) == maxValue) {
  34.                                 if (j > maxKey) {
  35.                                         maxKey = j;
  36.                                 }
  37.                         }
  38.                 }
  39.                 System.out.println("maxKey:" + maxKey + "--maxValue:" + maxValue);
  40.         }
复制代码

作者: HM代景康    时间: 2013-8-17 13:46
import java.util.Iterator;import java.util.Map;import java.util.TreeMap;public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) {  String str = null;  try {   str = args[0];  } catch (ArrayIndexOutOfBoundsException e) {   System.out.println("请输入参数!");   System.exit(0);  }  Map tree = new TreeMap();  for (int i = 0; i < str.length(); i++) {   char ch = str.charAt(i);   if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {    if (!tree.containsKey(ch)) {     tree.put(ch, new Integer(1));    } else {     Integer in = (Integer) tree.get(ch) + 1;     tree.put(ch, in);    }   }  }  Iterator tit = tree.keySet().iterator();  while (tit.hasNext()) {   Object temp = tit.next();   System.out.print(temp.toString() + "(" + tree.get(temp) + ")");  } }}
作者: HM代景康    时间: 2013-8-17 13:49
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class Test
{
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
String str = null;
try {
  str = args[0];  
} catch (ArrayIndexOutOfBoundsException e)
{   
System.out.println("请输入参数!");  
System.exit(0);
}
Map tree = new TreeMap();
  for (int i = 0; i < str.length(); i++)
{  
char ch = str.charAt(i);   
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{  
  if (!tree.containsKey(ch))
{     tree.put(ch, new Integer(1));    }
else
{     
Integer in = (Integer) tree.get(ch) + 1;   
  tree.put(ch, in);   
}
  }  
}  
Iterator tit = tree.keySet().iterator();  
while (tit.hasNext())
{   Object temp = tit.next();  
System.out.print(temp.toString() + "(" + tree.get(temp) + ")");  }
}
}
作者: 兜兜转转    时间: 2013-8-17 13:57
  1. package com.map;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import java.util.TreeMap;
  9. public class TreeMapDemo
  10. {


  11.         public static void main(String[] args)
  12.         {
  13.                
  14.                 //System.out.println(getCount("AAC-A+=BBB/CEDD"));
  15.         }
  16.         public static String getCount() throws Exception
  17.         {
  18.                             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  19.                                         String s = null;
  20.                                         while((s = br.readLine())!= null)
  21.                                         {
  22.                                                   break;
  23.                                         }
  24.                
  25.                                 //将传入的字符串利用String类的toCharArray()转变为字符数组并赋值给chs
  26.                                    char[] chs = s.toCharArray();
  27.                                    TreeMap<Character,Integer> tp = new TreeMap<Character,Integer>();
  28.                                    for(int i = 0; i<chs.length; i++)
  29.                                    {
  30.                                            if (!(chs[i] >= 'a' && chs[i] <= 'z' || chs[i] >= 'A' && chs[i] <= 'Z'))
  31.                                            {
  32.                                                    continue;
  33.                                                
  34.                                            }
  35.                                            Integer value = tp.get(chs[i]);
  36.                                            int count = 0;
  37.                                            if(!(value == null))
  38.                                            {
  39.                                                    count=value;
  40.                                            }
  41.                                                    count++;
  42.                
  43.                                            tp.put(chs[i],count);          
  44.                
  45.                                    }
  46.                                    Set<Map.Entry<Character,Integer>> set = tp.entrySet();
  47.                                    Iterator<Map.Entry<Character,Integer>> mapit = set.iterator();
  48.                                    StringBuilder sb = new StringBuilder();
  49.                                    while(mapit.hasNext())
  50.                                    {
  51.                                            Map.Entry<Character,Integer>  map = mapit.next();
  52.                                            Character key = map.getKey();
  53.                                            Integer value = map.getValue();
  54.                                            sb.append(key+" 出现 "+value+"次。"+"\n");
  55.                                    }
  56.                          return sb.toString();          
  57.           }
  58. }
复制代码

作者: EYE_SEE_YOU    时间: 2013-8-18 07:13
统统都是大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2