黑马程序员技术交流社区

标题: 统计一句话中某个词语出现的次数 [打印本页]

作者: 郑丹丹1990    时间: 2013-4-23 16:53
标题: 统计一句话中某个词语出现的次数
本帖最后由 郑丹丹1990 于 2013-4-24 08:55 编辑

例如:传智播客欢迎您,欢迎到传智博客学习。统计“传智博客”出现的次数
作者: 李君言    时间: 2013-4-23 17:16
我也是刚学习,下面是我写的,希望能帮到你。

            string zi = "传智播客欢迎您,欢迎到传智播客学习";
            char[] num = zi.ToArray(); //转换成char类型的数组
            int[] chishu = new int[num.Length];//用来储存每个字符出现的次数
            for (int a = 0; a < num.Length; a++)
            {
                for (int b = a; b < num.Length; b++)
                {
                    if (num[a] == num[b] && a != b)
                    {
                        chishu[a] = chishu[a] + 1;
                        num[b] = '!';//把已经比较的字做个标记
                    }
                }
            }

            for (int i = 0; i < num.Length; i++)
            {
                if (num[i] != '!')
                {
                    Console.WriteLine("{0}{1}", num[i], chishu[i] + 1);
                }
            }
作者: 风雪再现    时间: 2013-4-23 18:05
static void Main(string[] args)
        {
            string str = "传智播客欢迎您,欢迎到传智播客学习";
            str = str.Replace("传智播客", "A");//用字母A代替“传智播客”
            string[] strs = str.Split('A');    //俺A把字符串分成几个字符串存到数组中
            int times = strs.Length - 1;       //A出现的次数就是“传智播客”出现的次数,A出现的次数为数组长度减1
            Console.WriteLine(times);
            Console.ReadKey();
        }
作者: 李君言    时间: 2013-4-23 18:55
本帖最后由 李君言 于 2013-4-23 18:57 编辑

还没有学会别的代码,然后又写了个,不知道思路对不对。

            string chuan = "传智播客";
            string zi = "传智播客欢迎您,欢迎到传智播客学习";

            int sum = 0;
            for (int a = 0; a < zi.Length; a++)
            {
                if (zi[a] == chuan[0] && zi[a+1] == chuan[1] && zi[a+2] == chuan[2] && zi[a+3] == chuan[3])
                {
                    sum++;
                }
            }
            Console.WriteLine("出现的次数为{0}",sum);
作者: 郑丹丹1990    时间: 2013-4-23 19:59
李君言 发表于 2013-4-23 18:55
还没有学会别的代码,然后又写了个,不知道思路对不对。

            string chuan = "传智播客";

:handshake
作者: 郑丹丹1990    时间: 2013-4-23 20:01
风雪再现 发表于 2013-4-23 18:05
static void Main(string[] args)
        {
            string str = "传智播客欢迎您,欢迎到传智播客学 ...

非常好!
作者: wangyougu010    时间: 2013-4-23 20:40
代码楼上说了,我说一下思路:
主要利用TreeMap的知识,TreeMap存储的Key-Value键值对,以字符作为键key、该字符出现的次数为值value,存入Map集合对象,该过程中,
如果key已存在,则取出对应的value值+1,再次将新的key-value键值对存入集合对象,如果key值不存在,则存入的value值为1。下面迭代输出就可以了。希望能帮到您
作者: xiaohu1218    时间: 2013-4-23 21:14
最经典的是字符匹配算法(KMP算法),算法与数据结构里的经典算法之一,我之前做过,现在记得不是太清楚了,楼主有时间可以查一下这个算法
作者: 郑丹丹1990    时间: 2013-4-24 08:46
wangyougu010 发表于 2013-4-23 20:40
代码楼上说了,我说一下思路:
主要利用TreeMap的知识,TreeMap存储的Key-Value键值对,以字符作为键key、 ...

:handshake
作者: 郑丹丹1990    时间: 2013-4-24 08:46
xiaohu1218 发表于 2013-4-23 21:14
最经典的是字符匹配算法(KMP算法),算法与数据结构里的经典算法之一,我之前做过,现在记得不是太清楚了 ...

:handshake
作者: 郑丹丹1990    时间: 2013-5-7 16:23
风雪再现 发表于 2013-4-23 18:05
static void Main(string[] args)
        {
            string str = "传智播客欢迎您,欢迎到传智播客学 ...

你这个方法有一定的漏洞,比如“传智播客在开头和尾部就不可以了”
作者: 风雪再现    时间: 2013-5-7 17:54
郑丹丹1990 发表于 2013-5-7 16:23
你这个方法有一定的漏洞,比如“传智播客在开头和尾部就不可以了”

在开头和结尾的时候,分出来的字符串是空格,但是还是有字符串的,我验证过的
作者: 郑丹丹1990    时间: 2013-5-8 08:03
风雪再现 发表于 2013-5-7 17:54
在开头和结尾的时候,分出来的字符串是空格,但是还是有字符串的,我验证过的 ...

好,我的疏忽。
作者: 朱传波    时间: 2013-5-9 13:42
风雪再现 发表于 2013-4-23 18:05
static void Main(string[] args)
        {
            string str = "传智播客欢迎您,欢迎到传智播客学 ...

很新颖的方法哦




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