1. 程式人生 > >面試題:字串出現次數最多的字母和次數(基礎思路篇)

面試題:字串出現次數最多的字母和次數(基礎思路篇)

今天中午公司要求的小功能寫完之後,想了想之前的一道面試題。
題目:

給一個字串,找到出現次數最多的字母和次數(手寫程式碼)

當時想到了用map,但是寫了一半感覺到自己對map還是不熟練,手寫寫不出來,於是就換了個思路。

原理: 通過字串分割函式分割字串,判斷分割後的長度來比較字母的次數。

大體功能實現了,String改變次數較多,效能較低,有空了在補充一篇吧,這個主要是思路。

/*
 * 程式入口
 */
public static void main(String[] args){
	String str = "quaint,hello Word!";
	System.
out.println(getMaxCharAndNum(str)); } /* * 尋找一個字串中出現次數最多的 字母 * * 原理: 通過字串分割函式分割字串,判斷分割後的長度來比較字母的次數. * */ public static String getMaxCharAndNum(String str){ //儲存最多出現的次數 int maxNum = 0; //儲存出現最多的字母 String maxChar = ""; //對字串中不是字母的進行刪除,還有重複的字母刪除,減少迭代次數 String str_Iterator = removeOtherChar(str); //防止最後全部一樣分割不出來,隨便加一個特殊符號
str+="/"; for (int i = 0;i<str_Iterator.length();i++) { //獲取迭代的每一個字元,char-->String 加了一個空字串 String str_i = str_Iterator.charAt(i)+""; //對原字元分割後得到陣列 String[] strs = str.split(str_i); //判斷陣列的長度,這裡字串出現一次會分成兩個陣列,所以字串個數為陣列長度減一 if(strs.length-1>maxNum){ maxChar=str_i; maxNum = strs.length-
1; }else if(strs.length-1==maxNum){ //如果有多個字母出現的次數相等,那麼","隔開 maxChar+=(","+str_i); } } maxChar+=" 出現次數為:"+maxNum; return maxChar; } /* * 移除重複的字元,和非字母字元 * 暫時先不處理,主要是一個思路 */ public static String removeOtherChar(String str){ //這裡需要寫實現方法 return str; }

執行結果:
l,l,o,o 出現次數為:2
如果字串處理函式實現之後,結果應該是下面的
l,o 出現次數為:2
博主比較菜,優化部落格地址:
https://blog.csdn.net/quaint_csdn/article/details/84103674