統計一個整數中出現次數最多最大的數字

要求:

     統計一個整數中出現最多的數字。如果數字個數一樣,則以最大的數字爲準,例如 1 輸出 1,121 輸出 1,23231 輸出 3。

 

針對這個問題,處理步驟可以分爲2步:

第一步:首先抽離整數中的每個數字,並且放到該數字對應的桶數組中,桶數組是一個長度爲10的數組,其中數組的每個索引都表示整數中可能出現的數字,數組索引0到9剛好表示0到9這10個數字。至於抽離數字可以先將整數對10取模,得到的最低位的數字,再將該數字對應的數組位置的元素加1,接着再將整數除以10,這樣到整數爲0時,就已抽離出整數中的所有數字。

 

第二步:現在桶數組中的10個元素表示的是整數中所有數字的出現次數,例如573257抽離完後數組中所因爲2,3,5,7的四個位置的值應該爲1,1,2,2。循環得到數組中的最大元素,並且保留索引。如果有兩個數字出現次數一樣,遍歷桶數組也能獲取整數中其中最大的數字,大家仔細想想就知道了。

 

代碼

public class NumberStat {

	public static void main(String[] args) {
		int number = 573257;
		//桶數組,數組的索引就表示整數中的各個數字,數組元素表示該索引在數組中出現的次數
		int[] barrel = new int[10]; 
		//抽取各個數字並且放入到barrel中
		getNumber(number, barrel);
		int max = barrel[0]; //max存放最多的次數
		int index = 0; //index存放出現次數最多的數字
		for(int i=1; i<barrel.length; i++) {
			if(max<=barrel[i]) {
				max =barrel[i];
				index = i;	
			}
		}
		System.out.println("出現次數最多的數字是:" + index + ",出現的次數是:" + max);
	}

	/*
	 * 循環地對整數對10取模,並將得到的數字放入其對應的桶中
	 * 接着對整數除10,當numer爲0時,所有的數字都已抽離
	 */
	private static void getNumber(int number, int[] barrel) {
		while(number!=0) {
			int num = number%10;
			barrel[num]++;
			number/=10;
		}
	}
}

 

出現次數最多的數字是:7,出現的次數是:2

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章