Java中字符串的频率计数器

时间:2014-11-26 17:49:33

标签: java string frequency

我有一个string用户将输入代表时间。即“10:05”

我一直在搜索,但找不到搜索此string以查找特定号码的方法。我需要这个数字的原因是因为我需要取每个数字并使用algorithm来发现在数字时钟上显示这个数字所需的功率。为此,我需要每个数字的频率。例如,如果时间是10:05,则数字0将出现2次,我可以将该数字乘以2并将其乘以必要的数字以发现所需的功率。

4 个答案:

答案 0 :(得分:0)

我确信这是一种更有效的方法,但是:

String test = "10:05";

char[] array = test.toCharArray();
int counter = 0;

for(char c : array) {
   if (c.Equals('0')) {
       counter++;
   }
}

System.out.println("The number '0' appears " + counter + " times."); //2

答案 1 :(得分:0)

创建一个地图,其中包含您想要作为关键字的数字以及每个数字显示为值的频率。逐字逐句地迭代字符串,忽略非数字字符,随时增加数字频率映射。

示例:

HashMap<Integer, Integer> num_freq = new HashMap<>();

String input = "10:05"; // Example input

char[] input_chars = input.toCharArray();

for(char c : input_chars){
    // Accept only characters that are digits
    if(Character.isDigit(c)){
        // Grabs digit from character

        int num = Character.digit(c, 10);

        // Put 1 into map if no entry exists, else increment existing value

        num_freq.compute(num, (k_num, freq) -> freq == null ? 1 : freq + 1);
    }
}

// Print result out

num_freq.forEach((num, freq) -> {
    System.out.println("Digit " + num + " appears " + freq + " time(s)");
});

答案 2 :(得分:0)

如果我收到你的问题,那么下面的代码就可以了,我希望 -

int[] powerArr   = {2,3,2,3,2,3,2,3,2,3};
String input = "10:05";
int powerConsumption = 0;

for(char c : input.replace(":", "").toCharArray()) {
    powerConsumption = powerConsumption + powerArr[Integer.parseInt(String.valueOf(c))];
}

powerConsumption:总耗电量
powerArr:显示0的电源阵列,然后显示电源1 ...电源显示9

如果您对发生次数感兴趣,那么 -

int[] counterArr = {0,0,0,0,0,0,0,0,0,0};
String input = "10:05";
int tmpVal = 0;

for(char c : input.replace(":", "").toCharArray()) {
    tmpVal = Integer.parseInt(String.valueOf(c));
    counterArr[tmpVal] = counterArr[tmpVal]+1;
}

counterArr 的第一个值将代表0的出现,第二个为1,依此类推。

答案 3 :(得分:0)

这对我有用:(假设时间总是以xx:yy格式输入)

 public static void main(String args[])
    {
        String time = "10:07"; //User Input
        time = time.replace(":", "");
        char digit[] = {time.charAt(0), time.charAt(1), time.charAt(2), time.charAt(3)};
        int[] count = new int[digit.length];
        Arrays.sort(digit);

        for (int i = 0; i < digit.length; i++)
        {
            count[i]++;
            if (i + 1 < digit.length)
            {
                if (digit[i] == digit[i + 1])
                {
                    count[i]++;
                    i++;
                }
            }
        }

        for (int i = 0; i < digit.length; i++)
        {
            if (count[i] > 0)
            {
                System.out.println(digit[i] + " appears " + count[i]+" time(s)");
            }
        }
    }

输出:

0 appears 2 time(s)
1 appears 1 time(s)
7 appears 1 time(s)