最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET從字符串中查找字符出現(xiàn)次數(shù)的具體實(shí)現(xiàn)方法

 更新時間:2013年11月08日 16:21:55   作者:  
今天在一場“特殊的討論”中引入了一個問題,如何在C#求出字符串中某字符的出現(xiàn)次數(shù),比如求“ADSFGEHERGASDF”中“A”出現(xiàn)的次數(shù)

首先想到的方法當(dāng)然是從頭遍歷字符串并統(tǒng)計:

復(fù)制代碼 代碼如下:

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

第二種方法也很容易想到,將字符串中所有要查找的字符去除,然后比較去除前后的字符串長度即可。這種方法遭到了某人的鄙視,據(jù)說性能很差而且多占空間。

復(fù)制代碼 代碼如下:

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

接下來某人又提出了第三種方法,是用要查找的字符為分隔符,將原字符串分隔為多個子串,然后求子串的數(shù)目即可。在C#中這是一個寫起來很短的方法:

復(fù)制代碼 代碼如下:

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

我們從原理可以推斷出三者性能的順序,但究竟差距是多少呢,還是要動手試驗(yàn)一下。這是非常經(jīng)典的測試代碼:

復(fù)制代碼 代碼如下:

stringstr="SADTHDGSAFSDGTGHRDGSADFADDRHDFSGASDAA";

Stopwatchsw=newStopwatch();

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

sw.Start();

for(inti=0;i<100000;i++)
{
c=三種算法
}

sw.Stop();

t=sw.ElapsedMilliseconds;

首先我們確保正確性,經(jīng)測試三種方法都能正確處理多種情況,包括首尾、連續(xù)出現(xiàn)、不出現(xiàn)或串長度為0等,我所取的字符串是一個很普通的串。編譯為Release版,預(yù)運(yùn)行10次后獲得以下結(jié)果:

遍歷統(tǒng)計:13毫秒
替換后比較長度:112毫秒
斷開字符串后計數(shù):233毫秒

這里已經(jīng)體現(xiàn)出差異,遍歷統(tǒng)計比替換后比較要快10倍,斷開字符串又要慢一些。接下來我又做了如下兩個測試:

1、不改變字符串的長度,增加或減少要查找字符串的個數(shù)。
2、不改變要查找字符出現(xiàn)的頻率,但增長字符串的長度。

結(jié)果發(fā)現(xiàn),三種方法都隨字符串長度增加線性變慢,而后兩種方法還隨要查找的字符增加而變慢。

斷開字符串的方法還受要查找字符串分布情況的影響。

研究Replace函數(shù)和Split函數(shù)的實(shí)現(xiàn)可以徹底解決這個問題。不過我沒有心情細(xì)細(xì)研究了,我還是決定選用第二種方法——替換后比較長度。雖然其速度比第一種方法慢,但易于改寫為求長度不為1的子串出現(xiàn)次數(shù)的方法。第一種方法若改為求長度大于1的字串就要考慮很多因素(盡管不一定真的很麻煩),我懶得想了,呵呵。

相關(guān)文章

  • MVC4制作網(wǎng)站教程第一篇 緒論

    MVC4制作網(wǎng)站教程第一篇 緒論

    MVC4制作網(wǎng)站教程第一篇,創(chuàng)建項(xiàng)目,網(wǎng)站配置,從最基本的操作入手,幫助大家了解MVC4網(wǎng)站入門制作的過程,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實(shí)現(xiàn)代碼

    Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實(shí)現(xiàn)代碼,本文對3種情況都做了介紹,只有普通數(shù)據(jù)的表單、只上傳文件的表單、包含普通數(shù)據(jù)和上傳文件表單,需要的朋友可以參考下
    2014-08-08
  • jenkins部署.net平臺自動化構(gòu)建的方法步驟

    jenkins部署.net平臺自動化構(gòu)建的方法步驟

    這篇文章主要介紹了jenkins部署.net平臺自動化構(gòu)建的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • asp.net下獲取Excel所有的工作表名稱

    asp.net下獲取Excel所有的工作表名稱

    asp.net下獲取Excel所有的工作表名稱...
    2007-03-03
  • .NET發(fā)送郵件的實(shí)現(xiàn)方法示例

    .NET發(fā)送郵件的實(shí)現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于.NET發(fā)送郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用.net具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • ASP.NET?Core獲取正確查詢字符串參數(shù)示例

    ASP.NET?Core獲取正確查詢字符串參數(shù)示例

    這篇文章主要為大家介紹了ASP.NET?Core正確獲取查詢字符串參數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • web.config中配置數(shù)據(jù)庫連接的方式

    web.config中配置數(shù)據(jù)庫連接的方式

    Web.config文件是一個XML文本文件,它用來儲存 ASP.NET Web 應(yīng)用程序的配置信息(如最常用的設(shè)置ASP.NET Web 應(yīng)用程序的身份驗(yàn)證方式),它可以出現(xiàn)在應(yīng)用程序的每一個目錄中。本文主要介紹web.config中配置數(shù)據(jù)庫連接的兩種方式,一起來看。
    2015-10-10
  • Asp.net 下載功能的解決方案

    Asp.net 下載功能的解決方案

    今天在網(wǎng)上找到一個比較好的asp.net下載方法的解決方案
    2009-11-11
  • .NET Core系列之MemoryCache 緩存域

    .NET Core系列之MemoryCache 緩存域

    這篇文章主要介紹了.NET Core系列之MemoryCache 緩存域,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Hangfire在ASP.NET CORE中的簡單實(shí)現(xiàn)方法

    Hangfire在ASP.NET CORE中的簡單實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Hangfire在ASP.NET CORE中的簡單實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11

最新評論

永定县| 霍林郭勒市| 崇州市| 韶山市| 潍坊市| 镇平县| 邛崃市| 临西县| 云龙县| 赤城县| 堆龙德庆县| 泗阳县| 马山县| 宣武区| 阆中市| 保定市| 嘉兴市| 永和县| 漳州市| 黎平县| 浮山县| 平潭县| 阳江市| 曲靖市| 揭西县| 黑水县| 紫阳县| 沙雅县| 高碑店市| 海丰县| 资溪县| 化州市| 枣阳市| 富阳市| 永平县| 武冈市| 克什克腾旗| 汤原县| 贞丰县| 大足县| 德阳市|