摘要:要求編寫代碼實現尋找一個字符串中出現次數最多的字符以及出現的次數。最后只需要在集合中找到值最大的即可。
要求編寫代碼實現:尋找一個字符串中出現次數最多的字符以及出現的次數。
解法一:用刪除法實現 (挺巧妙的一種)public class FindTheMostAppearChar { public static void main(String[] args) { deleteMethodToAchieve(); } /** * 用刪除法實現 (挺巧妙的) * 解題思路:每次取出字符串的第一個字符,將字符串中與第一個字符相同的字符全部刪掉, * 然后通過計算刪除前后字符串的長度來確定該字符在字符串出現的次數,最終比較出出現次數最多的字符 */ public static void deleteMethodToAchieve() { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine().trim(); scanner.close(); int max_length = 0; String max_str = ""; while (string.length() > 0) { String firstChar = string.substring(0,1); int length = string.length(); string = string.replaceAll(firstChar, ""); if (length - string.length() > max_length) { max_length = length - string.length(); max_str = firstChar; } } System.out.println("出現次數最多的字符是:" + max_str + ",出現的次數:" + max_length); } }解法二:用查找法實現
public class FindTheMostAppearChar { public static void main(String[] args) { hashMapMethodToAchieve(); } /** * 用字符數組查找法實現 * 解題思路:先將字符串拆分成字符數組,然后轉存到 HashMap 集合中, * 該集合的key為字符串中出現的字符,value為對應字符串出現的次數。 * 最后只需要在HashMap集合中找到Value值最大的key即可。 */ public static void hashMapMethodToAchieve() { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine().trim(); scanner.close(); // 將字符串轉換成字符數組 char[] arr = string.toCharArray(); Map解法三:用排序法實現map = new HashMap<>(); // key為出現的字符,value 為該字符出現的次數,將字符數組轉存在 HashMap 中 if (arr != null && arr.length > 0) { for (int i = 0; i < arr.length; i++) { if (map.get(arr[i]) != null) { // 若不為空,說明已經存在相同的字符,則 value 值在原來的基礎上加1 map.put(arr[i],map.get(arr[i]) + 1); } else { map.put(arr[i], 1); } } } // 查找出出現次數最多的字符以及出現的次數也有多種寫法 FindTheMostCharByMap(map); // 查找寫法一:用 Iterator 遍歷 Map 來查找 // FindTheMostCharByMapEntry(map); // 查找寫法二:用 Map.Entry 提高效率 // FindTheMostCharByForLoop(map, arr); // 查找寫法三:直接用 for 循環來遍歷查找 } // 查找寫法一:用 Iterator 遍歷 Map 來查找 public statice void FindTheMostCharByMap(Map map) { Set keys = map.keySet(); // 獲取所有的key Iterator iterator = keys.iterator(); // 實例化 Iterator Character maxKey = (Character) iterator.next(); //定義第一個為最大的value和對應的key int maxValue = map.get(maxKey); while (iterator.hasNext()) { Character temp = (Character) iterator.next(); if (maxValue < map.get(temp)) { maxKey = temp; maxValue = map.get(temp); } } System.out.println("出現次數最多的字符是:" + maxKey + ", 出現的次數:" + maxValue); } // 查找寫法二:用 Map.Entry 提高效率 public static void FindTheMostCharByMapEntry(Map map) { Iterator iterator = map.entrySet().iterator(); Map.Entry entry = (Map.Entry) iterator.next(); char maxKey = (char) entry.getKey(); // 獲取key int maxValue = (int) entry.getValue(); // 獲取value while (iterator.hasNext()) { entry = (Map.Entry) iterator.next(); char tempKey = (char) entry.getKey(); int tempValue = (int) entry.getValue(); if (maxValue < tempValue) { maxKey = tempKey; maxValue = tempValue; } } System.out.println("出現次數最多的字符是:" + maxKey + ", 出現的次數:" + maxValue); } // 查找寫法三:直接用 for 循環來遍歷查找 public static void FindTheMostCharByForLoop(Map map, char[] arr) { int maxValue = map.get(arr[0]); char maxKey = " "; for (int i = 0; i < arr.length; i++) { if (maxValue < map.get(arr[i])) { maxValue = map.get(arr[i]); maxKey = arr[i]; } } System.out.println("出現次數最多的字符是:" + maxKey + ", 出現的次數:" + maxValue); } }
public class FindTheMostAppearChar { public static void main(String[] args) { sortMethodToAchieve(); } /** * 用排序法實現 * 解題思路:先將字符串轉換成字符數組,然后對字符數組進行排序, * 統計每個字符重復出現的次數,最后比較得出出現次數最多的字符以及出現次數 */ public static void sortMethodToAchieve() { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine().trim(); scanner.close(); char[] arr = string.toCharArray(); Arrays.sort(arr); // 對數組進行排序 char maxValue = "a"; // 記錄出現次數最多的元素 int maxCount = 0; // 記錄出現次數 int count = 1; for (int i = 0; i < arr.length - 1; i++) { if (arr[i] == arr[i+1]) { count++; } if (arr[i] != arr[i+1]) { if (count > maxCount) { maxCount = count; maxValue = arr[i]; } count = 1; } } System.out.println("出現次數最多的字符是:" + maxValue + ", 出現的次數:" + maxCount); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77830.html
摘要:這幾天小秋去面試了,不過最近小秋學習了不少和位算法相關文章,例如面試現場如何判斷一個數是否在億個整數中算法技巧位運算裝逼指南對于算法題還是有點信心的,,,,于是,發現了如下對話。這幾天小秋去面試了,不過最近小秋學習了不少和位算法相關文章,例如 【面試現場】如何判斷一個數是否在40億個整數中? 【算法技巧】位運算裝逼指南 對于算法題還是有點信心的,,,,于是,發現了如下對話。 20億級別 面試...
摘要:記錄水平垂直居中方法絕對定位方法絕對定位方法方法和的區別在文檔流中沒有,在文檔流占據空間但不顯示隱形是否繼承不繼承是否占據空間不占據空間頁面屬性更改是否重新渲染重新渲染忘了點擊列表顯示相應內容內容內容內容內容內容方法閉包方法事件代理布爾值是 20170913記錄 1. 水平垂直居中 // 方法1: 絕對定位1 // 方法2: 絕對定位2 // 方法3: flex // 方法4: cs...
摘要:中的算法附道面試常見算法題解決方法和思路關注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現場面試,檢查編程技能和文化契合度。值得記住的數組方法有和。一個好的解決方案是使用內置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現場面試,檢查編程...
摘要:答案使用,申請一個長度為類型的,每個位置只表示或,該數組占用空間約。遍歷億個數,當前數為,落在區間,對應。 過濾100億黑名單 題目 假設有100億個URL的黑名單,每個URL最多占用64B,設計一個過濾系統,判斷某條URL是否在黑名單里。 要求 不高于萬分之一的判斷失誤率;額外內存不超過30GB 答案 100億個64B的URL需要640GB的內存,顯然直接存哈希表不合理??紤]布隆過濾...
摘要:方法二生成統計次數字符最多的是,出現了次點評稍微好一點。問題三題目如何給字符串加千分符例如方法一轉換的方法轉化為數組最終的結果點評將字符串轉化為數組,然后對其切分重組。 分享幾道js面試題,自己感覺還是挺重要的,當看到題目的時候希望大家先花幾秒鐘考慮一下,然后在看答案。如果有比較好的解法,歡迎大家留言指正,謝謝大家! 第一題 題目: 寫一個字符串轉換成駝峰的方法? 例如:borde...
閱讀 3699·2021-11-11 16:55
閱讀 1646·2021-10-08 10:04
閱讀 3581·2021-09-27 13:36
閱讀 2761·2019-08-30 15:53
閱讀 1855·2019-08-30 11:17
閱讀 1259·2019-08-29 16:55
閱讀 2098·2019-08-29 13:57
閱讀 2513·2019-08-29 13:13