黑马程序员技术交流社区

标题: 计算字符串中每种字符出现的次数 [打印本页]

作者: 我的专属    时间: 2014-3-20 13:11
标题: 计算字符串中每种字符出现的次数
.计算字符串中每种字符出现的次数,“Welcome to Chinaworld”,不区分大小写,打印“W2”“e 2”“o 3”……



作者: threederek    时间: 2014-3-20 14:50
        /// 计算字符串中子串出现的次数
        /// </summary>
        /// <param name=”str”>字符串</param>
        /// <param name=”ch”>字符</param>
        /// <returns>出现的次数</returns>
        static int SubstringCount(string str, char ch)
        {
            if (str.Contains(ch))
            {
                string strReplaced = str.Replace(ch.ToString(), "");
                return (str.Length - strReplaced.Length);
            }
            return 0;
        }


作者: shangxin    时间: 2014-3-20 15:33

        static void Main(string[] args)
        {
            //将字符串转换为小写
            string str = "Welcome to Chinaworld".ToLower();
            //将字符串转换成字符数组
            char[] ch = str.ToCharArray();
            //用来计数
            int count = 0;
            //键值对,记录每个字符出现的次数
            Dictionary<char, int> dic = new Dictionary<char, int>();
      
            for (int i = 0; i < ch.Length; i++)
            {
                for (int j = i; j < ch.Length; j++)
                {
                    //判断两个字符是否相等,相等count加1
                    if (ch[i] == ch[j])
                    {
                        count++;
                    }
                }
                //判断字符是否存在
                if (!dic.ContainsKey(ch[i]))
                {
                    dic.Add(ch[i], count);
                }
                //计数器清空
                count = 0;
            }
            //遍历
            foreach (KeyValuePair<char,int> kvp in dic)
            {
                Console.Write("{0},{1}  ", kvp.Key, kvp.Value);
            }
            Console.ReadKey();
        }
    }
}

仅供参考,有不对的可以指正,谢谢!
作者: 我的专属    时间: 2014-3-20 22:17
shangxin 发表于 2014-3-20 15:33
static void Main(string[] args)
        {
            //将字符串转换为小写

谢谢你啊,:)
作者: 清风木扬    时间: 2014-3-27 13:46

public class daytest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                String str="Welcome to Chinaworld";
               
                StringBuilder sb = getCharNum(str);
                System.out.println(sb);
               
        }
   
        public static StringBuilder getCharNum(String str) {
                //TreeMap可以排序
                Map<String,Integer> map=new TreeMap<String,Integer>();
               
                for(int i=0;i<str.length();i++)
                {
                        int itc=str.charAt(i);
                        //只要字母,大小写转换。
                    if(itc>'z' || (itc<'a'&& itc>'z') || itc<'A'  )
                        continue;                       
                        if(itc>97 && itc<122 && map.containsKey(Character.toString((char)(itc-32))))
                           itc-=32;
                        if(itc>65 && itc<87 && map.containsKey(Character.toString((char)(itc+32))))
                                   itc+=32;
                       
                        String s=Character.toString((char)itc);
                       
                    int num=0;
                    if(map.containsKey(s))                             
                          num=map.get(s);
                      num++;
                      //相同Key时,只修改Values,不新增。当key不时才新增。
                      map.put(s, num);                  
                }
               
       
                StringBuilder sb=new StringBuilder();
                for(Map.Entry<String, Integer> entery:map.entrySet())
                {
                        sb.append("\""+entery.getKey()+entery.getValue()+"\","  );
                }
               
                if(sb.length()>0)
                        sb=sb.deleteCharAt(sb.length()-1);
                return sb;
        }

}


运行结果  "W2","a1","c2","d1","e2","h1","i1","l2","m1","n1","o3","r1","t1"




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