面試題:字串出現次數最多的字母和次數(基礎思路篇)
阿新 • • 發佈:2018-11-26
今天中午公司要求的小功能寫完之後,想了想之前的一道面試題。
題目:
給一個字串,找到出現次數最多的字母和次數(手寫程式碼)
當時想到了用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