国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java實現統計某字符串在另一個字符串中出現的次數

2019-11-14 21:49:04
字體:
來源:轉載
供稿:網友
java實現統計某字符串在另一個字符串中出現的次數

面試時會經常考這樣的題目,估計也不讓使用正則表達式。還好這個算法還算簡單,不過在草稿紙上寫難免會出現運行異常,好吧,面試官贏了,乃們屌絲就實實在在的把代碼碼出來吧。

謝謝“心扉”對我代碼bug的糾正,現已想到更簡便的方法,思路就是從被匹配字符串a中一個一個往后推,截取b字符串長度的字符串:

public class CountHit {public static void main(String[] args) {String a = "123456abcde6a6abc6ab";String b = "6abc";System.out.PRintln(new CountHit().hit(a, b));}/** *  * @param a *            被匹配的長字符串 * @param b *            匹配的短字符串 * @return 匹配次數 */public int hit(String a, String b) {if (a.length() < b.length()) {return 0;}char[] a_t = a.toCharArray();int count = 0;for (int i = 0; i < a.length() - b.length(); i++) {StringBuffer buffer = new StringBuffer();for (int j = 0; j < b.length(); j++) {buffer.append(a_t[i + j]);}if(buffer.toString().equals(b)){count ++;}}return count;}}

下面這個算法有bug,臨界點是部分匹配時會導致接下來后續真正能匹配的字符串被跳過一個字符,求高手糾正:

/** * 統計某字符串在另一個字符串中出現的次數 *  *  */public class CountHit {public static void main(String[] args) {String a = "123456abcde6ab";String b = "6abc";System.out.println(new CountHit().hit(a, b));}/** *  * @param a *            被匹配的長字符串 * @param b *            匹配的短字符串 * @return 匹配次數 */public int hit(String a, String b) {if (a.length() < b.length()) {return 0;}char[] a_t = a.toCharArray();char[] b_t = b.toCharArray();int count = 0, temp = 0, j = 0;for (int i = 0; i < a_t.length; i++) {// 保證一個連續的字符串 b 跟 a中某段相匹配if (a_t[i] == b_t[j] && j < b_t.length) {temp++;j++;// 此時連續的字符串 b 跟 已跟 a 中某段相匹配if (temp == b_t.length) {count++;temp = 0;j = 0;}}// 只要有一個字符不匹配,temp計數從來else {temp = 0;j = 0;}}return count;}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万州区| 长葛市| 德清县| 小金县| 舟曲县| 华池县| 平湖市| 游戏| 岢岚县| 马尔康县| 平陆县| 黑龙江省| 佛山市| 区。| 湟中县| 吉木萨尔县| 富源县| 祁阳县| 淄博市| 大连市| 大城县| 布拖县| 乡宁县| 得荣县| 大安市| 上犹县| 淳安县| 霍州市| 呼和浩特市| 建始县| 阜平县| 越西县| 蓬溪县| 张家川| 南江县| 西平县| 安乡县| 衡阳县| 双城市| 烟台市| 绿春县|