尋找字串中出現次數最多的字元java
今天去一家公司面試,遇到一道面試題。開始以為很簡單,飛快地寫完了給面試官看,面試官一下就挑出了問題,當時太緊張,沒想出來怎麼解決,回來後覺得這麼簡單的題都做不出來,還怎麼做一個優秀的程式設計師。花了30分鐘,輕鬆解決。
首先這道面試題初一看很簡單,尋找出字串中出現次數最多的字元,例如:aaaaaac,輸出a;如果出現次數一樣多,那麼輸出先達到次數的字元,例如:abcdefghijklba,輸出b(變種:輸出先出現的字元,其實解決思路一樣)。我看網上很多回答都是用HashMap,但是找出最大值後,如果有多個最大值你怎麼找到最先達到次數的字元呢?很多人就會想,再弄一個數組或者HashMap記錄下他最後出現的位置,如果你真這麼想,那麼你的演算法就是一坨屎。這道題目得換一種角度來思考!!!
我們在剛開始遍歷字串記錄次數的時候,能不能順便就記下他的位子呢?如果你這麼想,那麼這道題目就迎刃而解了。我的想法是,用兩個list,一個記他的順序,另一個記他的次數,他們的index是對應的。話不多說,我們看程式碼:
import java.util.ArrayList; import java.util.List; /** * * @author Lance * */ public class FindCharTest { public static void main(String[] args) { String s="abcdefghijklba"; System.out.println(findCharMost(s)); } public static char findCharMost(String s) { //記錄字串中的字元 List<Character> list=new ArrayList<>(); //記錄對應字元出現的次數 List<Integer> list2=new ArrayList<>(); //因為題目要求最先達到次數,那麼我就倒著來遍歷字串 //那麼記錄順序的list中就有字串的順序了 for(int i=s.length()-1;i>=0;i--){ if(!list.contains(s.charAt(i))) { //如果字元沒有出現過,那麼add到list中 list.add(s.charAt(i)); //同時在list2對應位置賦值為1 list2.add(1); }else { //如果字元出現過,那麼找到其對應的index int index=list.indexOf(s.charAt(i)); //在list2對應位置將次數++ list2.set(index,list2.get(index)+1); } } int max=list2.get(list2.size()-1); int j=list2.size()-1; //記錄順序的list中是按後到的字元放在前面的順序 //所以我們只要倒著遍歷找到最大值就可以了 for(int i=list2.size()-2;i>=0;i--){ if(list2.get(i)>max){ max=list2.get(i); j=i; } } return list.get(j); } }
轉載請宣告出處和作者,謝謝!!
相關推薦
尋找字串中出現次數最多的字元java
今天去一家公司面試,遇到一道面試題。開始以為很簡單,飛快地寫完了給面試官看,面試官一下就挑出了問題,當時太緊張,沒想出來怎麼解決,回來後覺得這麼簡單的題都做不出來,還怎麼做一個優秀的程式設計師。花了30分鐘,輕鬆解決。 首先這道面試題初一看很簡單,尋找出字串中出現次數最多的
(ES6的“...“配合ES5‘’forEach‘’)前端面試之判斷一個字串中出現次數最多的字元,統計這個次數
// 判斷一個字串中出現次數最多的字元,統計這個次數 let str = 'aasdadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsdasjjhsghkafsagjkg
演算法練習08 找出字串中出現次數最多的字元
題目 找出一個字串中出現次數最多的字元 const str = 'asdfaaaa' 最後的返回值是字串'a' 實現 嗯,我略加思考(半個小時左右),給出了一個複雜的方案,一個屎一般的方案 屎一般的方案 我的方案是利用redcue,計算出了每個字串出現的頻次
js 判斷一個字串中出現次數最多的字元,統計其出現次數
js 判斷一個字串中出現次數最多的字元,統計其出現次數 var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i
判斷一個字串中出現次數最多的字元,統計這個次數
var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[str.cha
java中輸出一個字串中出現次數最多的字元以及次數
1 先把字串轉化為陣列 .toCharArray 2 定義一個數組count[i] 存取每個字元 以及數量 count[i]++ 3 計算每個字元 以及值 4 取count的最大值 public class MaxString { public sta
求字串中出現次數最多的字元 JAVA
題目描述 求任意給定字串中出現次數最多的字元,如果出現最多次數的字元有多個,則只輸出最先出現的字元。 輸入描述 輸入任意一個字串(不超過100個字元) 輸出描述 輸出出現次數最多的字元。 輸入樣例 this is c++ program
js演算法:找出一個字串中出現次數最多的字元!
在其他部落格裡面看到了一種方法: 這個方法很簡單,但是15-20行程式碼對於萌新來說,不是很好理解,因此我給出了以下這個方案,先想辦法統計出所有字母各出現的次數,然後把這些次數push到一個數組裡面,找出最大的那個數(我這裡是通過排序找出的最大數),最大數有了,該數對應的字元不就很容易
Python 實現 找出一個字串中出現次數最多的字元並輸出該字元
'''演算法題二: 找出一個字串中出現次數最多的字正確的解決思路是: 利用collections 工具中的Counter,對列表中元素出現的頻率進行排序。 Counter返回值是一個按元素出現頻率降序排列的Counter物件,它是字典的子類,因此可以使用字典的方法'''fro
檢視字串中出現次數最多的字元以及出現的次數
這裡先補充一下物件的知識點: 例如 var json = { a:1, b:2, c:3 } console.log(json) // &n
華為上機試題(java)找出一個字串中出現次數最多的字元
Java求字串中出現次數最多的字元,如String Str = "aaabbcddddee";那麼輸出:d 4 ;若String Str = "aaabbcddddeexxxxxx";那麼輸出:x 6 import java.util.*; import java.uti
判斷字串中出現次數最多得那個字元(面試題)
var str = 'qwertyuilo.,mnbvcsarrrrrrrrtyuiop;l,mhgfdqrtyuio;.cvxsrtyiuo'; var json = {}; //遍歷str拆解其中的每一個字元將其某個字元的值及出現的個數拿出來作為json的kv for (
給定一個長度不限的字串,請找出該字串中出現次數最多的那個字元,並打印出該字元及出現次數(C/C++版)
#include<iostream> using namespace std; /** * @brief findchar 給定一個長度不限的字串,請找出該字串中出現次數最多的那個字元,並打印出該字元及出現次數; 如果多個字元的出現次數相同,只打印首個
統計字串中出現次數最多的字元及個數
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-eq
python學習第一週 獲取字串中出現次數最多的字母
給定一個包含不同的英文字母和標點符號的文字,找出其中出現最多的字母,檢測時不區分大小寫,並返回一個小寫字母,若存在相同次數的字母,則返回字母表中最先出現的那個。比如find,則返回f #!/usr/bin/python3 #-*- coding:UTF-8 -*- str_input = in
問題6: 找出字串中出現次數最多的字母及其出現的次數
這好像是華為機試的一道題目,我採用JAVA來完成,用JAVA也可以用其他方法。 我用一個比較簡單的方法,程式碼如下: public class Str{ public static void main(String[] args){ String str =
JS中獲取字串中出現次數最多的字母,常用方法
(1)陣列+物件 <script > var str = 'aafcbad'; var obj = {}; var arr = []; var letter; for(var i = 0,len
查詢字串中出現次數最多的字母和出現的次數. 示例: var str =" fdadffddfdffj"; ====> 出現次數最多的是f, 出現了 6 次;
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> var a =
JS判斷陣列或者一個字串中出現次數最多的元素及其出現的次數
1. 判斷一個字串中出現次數最多的字母:function maxCount(str) { var obj={}; for(var i=0;i<str.length;i++){ var key=str[i]; if(ob
求字串中出現次數最多的字母及次數
import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.TreeSet; public class JavaTest1 {