91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET實現從字符串中查找字符出現次數

發布時間:2021-07-24 13:50:30 來源:億速云 閱讀:203 作者:chen 欄目:開發技術

這篇文章主要介紹“ASP.NET實現從字符串中查找字符出現次數”,在日常操作中,相信很多人在ASP.NET實現從字符串中查找字符出現次數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”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;i<100000;i++)
{
c=三種算法
}

sw.Stop();

t=sw.ElapsedMilliseconds;

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

遍歷統計:13毫秒
替換后比較長度:112毫秒
斷開字符串后計數:233毫秒

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

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

結果發現,三種方法都隨字符串長度增加線性變慢,而后兩種方法還隨要查找的字符增加而變慢。

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

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

到此,關于“ASP.NET實現從字符串中查找字符出現次數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安岳县| 雅江县| 磐安县| 安溪县| 宜君县| 宾阳县| 外汇| 贵南县| 格尔木市| 镇安县| 洪湖市| 临海市| 吴旗县| 临沧市| 偏关县| 鄯善县| 丰都县| 故城县| 绥阳县| 嵊泗县| 当阳市| 礼泉县| 丁青县| 大连市| 龙南县| 湘潭县| 江津市| 银川市| 资中县| 永顺县| 闽清县| 青州市| 巢湖市| 凤城市| 磐安县| 澎湖县| 攀枝花市| 靖安县| 宣武区| 永登县| 五指山市|