
文章插圖
遇到這樣的問(wèn)題,常規(guī)的思路估計(jì)就是遍歷String,然后逐個(gè)對(duì)比 。下面先看循環(huán)遍歷
循環(huán)遍歷
private static int getNum(String originStr, String targetStr){int result = 0;for (int i = 0; i < originStr.length(); i++) {if (targetStr.equals(originStr.substring(i, i + 1))){result ++;}}returnresult;}這樣雖然直觀,但感覺效率不行 。繼續(xù)研究String中的方法,很快我們想到了indexOf方法,該方法可以獲取指定字符串在String對(duì)象的位置 。indexOf方法
private static int getNum(String originStr, String targetStr){int res = 0;int i = originStr.indexOf(targetStr);while (i != -1){i = originStr.indexOf(targetStr,i+1);res++;}return res;}這樣的方法看上去,好像不太直觀,此時(shí)想到split方法,該方法可以根據(jù)字符串切分原字符串,似乎可以通過(guò)切割后的數(shù)組數(shù)量達(dá)到計(jì)算效果split方法
private static int getNum(String originStr, String targetStr){int start = originStr.startsWith(targetStr) ? 1 : 0;int end = originStr.endsWith(targetStr) ? 1 : 0;String[] split = originStr.split(targetStr);return split.length - 1 + start + end;}split方法使用需要注意邊界問(wèn)題,如果不注意,容易漏計(jì)算 。除了這些還有其他方案嗎?replaceAll方法
private static int getNum(String originStr, String targetStr){String result = originStr.replaceAll(targetStr, "");int i = originStr.length() - result.length();returni;}通過(guò)replaceAll方法需要注意targetStr中是否有需要轉(zhuǎn)義的字符串 。測(cè)試各個(gè)方法的效率將每個(gè)方法執(zhí)行10000次,測(cè)得每個(gè)方法耗時(shí)如下
遍歷:10msreplaceAll:35mssplit:11msindexOf:2ms因此建議使用indexOf,大家還有沒有更高級(jí)的方法,歡迎留言 。以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 查找武漢平面設(shè)計(jì)培訓(xùn)學(xué)校
- java開發(fā)中常見中間件 java中間件技術(shù)有哪些
- python16進(jìn)制字符串轉(zhuǎn)10進(jìn)制 16進(jìn)制字符串轉(zhuǎn)10進(jìn)制
- java下載安裝教程 java下載網(wǎng)址官網(wǎng)
- 2021Java學(xué)習(xí)路線 java開發(fā)學(xué)習(xí)路線
- java源代碼運(yùn)行操作方法 java源代碼怎么運(yùn)行
- javascript選擇器推薦 javascript選擇器有哪些
- java字符串指定編碼 java設(shè)置字符串編碼
- java遍歷list刪除元素講解 java遍歷list刪除元素
- windows網(wǎng)站查找方案了解 windows網(wǎng)站查找方案
