• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET从字符串中查找字符出现次数的具体实现方法

    首先想到的方法当然是从头遍历字符串并统计:

    复制代码 代码如下:

    c1=0;
    for(inti=0;i {
    if(str[i]=='A')
    {
    c1++;
    }
    }

    第二种方法也很容易想到,将字符串中所有要查找的字符去除,然后比较去除前后的字符串长度即可。这种方法遭到了某人的鄙视,据说性能很差而且多占空间。

    复制代码 代码如下:

    c2=str.Length-str.Replace("A",String.Empty).Length;

    接下来某人又提出了第三种方法,是用要查找的字符为分隔符,将原字符串分隔为多个子串,然后求子串的数目即可。在C#中这是一个写起来很短的方法:

    复制代码 代码如下:

    c3=str.Split(newchar[]{'A'}).Length-1;

    我们从原理可以推断出三者性能的顺序,但究竟差距是多少呢,还是要动手试验一下。这是非常经典的测试代码:

    复制代码 代码如下:

    stringstr="SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA";

    Stopwatchsw=newStopwatch();

    longt;
    intc=0;
    GC.Collect();
    Application.DoEvents();

    sw.Start();

    for(inti=0;i100000;i++)
    {
    c=三种算法
    }

    sw.Stop();

    t=sw.ElapsedMilliseconds;

    首先我们确保正确性,经测试三种方法都能正确处理多种情况,包括首尾、连续出现、不出现或串长度为0等,我所取的字符串是一个很普通的串。编译为Release版,预运行10次后获得以下结果:

    遍历统计:13毫秒
    替换后比较长度:112毫秒
    断开字符串后计数:233毫秒

    这里已经体现出差异,遍历统计比替换后比较要快10倍,断开字符串又要慢一些。接下来我又做了如下两个测试:

    1、不改变字符串的长度,增加或减少要查找字符串的个数。
    2、不改变要查找字符出现的频率,但增长字符串的长度。

    结果发现,三种方法都随字符串长度增加线性变慢,而后两种方法还随要查找的字符增加而变慢。

    断开字符串的方法还受要查找字符串分布情况的影响。

    研究Replace函数和Split函数的实现可以彻底解决这个问题。不过我没有心情细细研究了,我还是决定选用第二种方法——替换后比较长度。虽然其速度比第一种方法慢,但易于改写为求长度不为1的子串出现次数的方法。第一种方法若改为求长度大于1的字串就要考虑很多因素(尽管不一定真的很麻烦),我懒得想了,呵呵。

    您可能感兴趣的文章:
    • 利用json获取字符出现次数的代码
    • 统计jQuery中各字符串出现次数的工具
    • 找出字符串中出现次数最多的字母和出现次数精简版
    • JavaScript计算字符串中每个字符出现次数的小例子
    • java字符串比较获取字符串出现次数的示例
    • php查找字符串出现次数的方法
    • php获取字符串中各个字符出现次数的方法
    • JavaScript实现计算字符串中出现次数最多的字符和出现的次数
    • python统计字符串中指定字符出现次数的方法
    • 统计输入字符各个字母出现频率的解题思路
    上一篇:asp.net中TextBox只能输入数字的最简洁的两种方法
    下一篇:ASP.NET两个截取字符串的方法分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    ASP.NET从字符串中查找字符出现次数的具体实现方法 ASP.NET,从,字符串,中,查找,