這是來自一道電面的題。
單詞統計非常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; }