Подсчет самой встречающейся цифры ... Найти цифру, которая встречается чаще всего в данном номере - PullRequest
0 голосов
/ 21 января 2011

следующий код для определения количества вхождений данной цифры в число. Что мне следует сделать, чтобы найти цифру, которая встречается чаще всего в данном номере?тогда сравните) может кто-нибудь, пожалуйста, помогите мне ..

import java.util.*;
public class NumOccurenceDigit 
{
    public static void main(String[] args) 

        {
            Scanner s= new Scanner(System.in);

            System.out.println("Enter a Valid Digit.(contaioning only numerals)");
            int number = s.nextInt();
            String numberStr = Integer.toString(number);
            int numLength = numberStr.length();

            System.out.println("Enter numer to find its occurence");
            int noToFindOccurance = s.nextInt();
            String noToFindOccuranceStr = Integer.toString(noToFindOccurance);
            char noToFindOccuranceChar=noToFindOccuranceStr.charAt(0);

            int count = 0;
            char firstChar = 0;
            int i = numLength-1;
            recFunNumOccurenceDigit(firstChar,count,i,noToFindOccuranceChar,numberStr);

    }
    static void recFunNumOccurenceDigit(char firstChar,int count,int i,char noToFindOccuranceChar,String numberStr)
    {

        if(i >= 0)
        {
            firstChar = numberStr.charAt(i);
            if(firstChar == noToFindOccuranceChar)
            //if(a.compareTo(noToFindOccuranceStr) == 0)
            {
                count++;

            }
            i--;
            recFunNumOccurenceDigit(firstChar,count,i,noToFindOccuranceChar,numberStr);
        }
        else
        {
            System.out.println("The number of occurance of the "+noToFindOccuranceChar+" is :"+count);
            System.exit(0);
        }
    }
}


/*
 * Enter a Valid Digit.(contaioning only numerals)
456456
Enter numer to find its occurence
4
The number of occurance of the 4 is :2*/

Ответы [ 2 ]

2 голосов
/ 21 января 2011
O(n)
  1. keep int digits[] = new int[10];
  2. каждый раз, когда digit i увеличивает значение digits[i]++
  3. , возвращающего массив максимум цифр и его индекс.вот и все.

Вот мой код Java:

public static int countMaxOccurence(String s) {
    int digits[] = new int[10];

    for (int i = 0; i < s.length(); i++) {
        int j = s.charAt(i) - 48;
        digits[j]++;
    }

    int digit = 0;
    int count = digits[0];
    for (int i = 1; i < 10; i++) {
        if (digits[i] > count) {
            count = digits[i];
            digit = i;
        }
    }

    System.out.println("digit = " + digit + "  count= " + count);
    return digit;
}

и вот некоторые тесты

System.out.println(countMaxOccurence("12365444433212"));
System.out.println(countMaxOccurence("1111111"));
2 голосов
/ 21 января 2011

объявить массив count []

и измените функцию поиска на что-то вроде

//for (i = 1 to n)
{
     count[numberStr.charAt(i)]++;
}

, затем найдите самый большой предмет в количестве []

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...