[Java]對字符串中的每一個單詞個數進行統計


這是來自一道電面的題。

單詞統計非常easy想到用Map來統計,於是想到了用HashMap。

可是我卻沒有想到用split來切割單詞,想着用遍歷字符的方式來推斷空格。人家面試官就說了,假設單詞之間不止一個空格呢?事實上遍歷的方法也是能夠的,可是處理起來可能比較麻煩一點。也沒有什么錯,畢竟我沒實用到輔助空間。

既然有簡單的方式。就用split來解吧。單詞之間可能會包括多個空格。用split的也會導致有空格的情況。正常解法就將保存單詞的數組再遍歷一下。用來去掉數組中的空格。

這里面我們能夠用一個正則表達式。

Map<String, int[]> sumWords(String str) {
		if (str == null)
			return null;
		str = str.trim();
		int len = str.length();
		if (len == 0)
			return null;
		Map<String, int[]> map = new HashMap<String, int[]>();//用int[]取代了integer。避免了Integer在使用過程中的自己主動裝箱和拆箱,提高了效率
		String[] words = str.split("\\s+");
		for (int i = 0; i < words.length; i++) {
			int[] counts = new int[1];
			if (!map.containsKey(words[i])) {
				counts[0] = 1;
				map.put(words[i], counts);
			} else {
				counts[0]=map.get(words[i])[0]+1;
				map.put(words[i], counts);
			}
		}
		return map;
	}




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM