zoukankan      html  css  js  c++  java
  • 299. Bulls and Cows

    一、题目

      1、审题

      

      2、分析

        两个字符串数字中,位置相同且数字相同则 bull++;位置不同但数字相同则 cow++;统计 bull、cow 个数。

    二、解答

      1、思路

        采用两个整形数组,num1[10], num2[10]; 

        遍历 secret、guess 相同位置的字符。

        若字符相同 则 bull ++ ;若字符不同,则将 secret 中改字符对应的数字作为下标在 num1 中 + 1, guess 字符在 num2中数值 +1。

        最终循环统计出 num1 与 num2 位置相同数值最小的所有元素的和,即为 cow 的个数。

        public String getHint2(String secret, String guess) {
            int bulls = 0, cows = 0;
            int[] numbers1 = new int[10];
            int[] numbers2 = new int[10];
            for (int i = 0; i < secret.length(); i++) {
                char ch1 = secret.charAt(i);
                char ch2 = guess.charAt(i);
                if(ch1 == ch2)
                    bulls++;
                else {
                    numbers1[ch1 - '0']++;
                    numbers2[ch2 - '0']++;
                }
            }
            
            for (int i = 0; i < 10; i++) 
                cows += Math.min(numbers1[i], numbers2[i]);
            
            return bulls + "A" + cows + "B";
            
        }

      方法二、

        ①、采用一个额外数组:  numbers[10]

        ②、secret 与 guess 字符相同则 bull ++ ;

        ③、否则,secret 对应字符数字作为下标在 numbers 查找,若值 value < 0,则 cow++ ; value++;

          guess 对应数字在numbers 中的 value 如果 > 0, 则 cow++;value--。

        public String getHint(String secret, String guess) {
            int bulls = 0, cows = 0;
            int[] numbers = new int[10];
            
            for (int i = 0; i < secret.length(); i++) {
                char ch1 = secret.charAt(i);
                char ch2 = guess.charAt(i);
                if(ch1 == ch2)
                    bulls++;
                else {
                    if(numbers[ch1 - '0']++ < 0) cows++;
                    if(numbers[ch2 - '0']-- > 0) cows++;
                }
            }
            return bulls + "A" + cows + "B";
        }

        

  • 相关阅读:
    我所理解的readonly和const
    代码中的良好习惯从点滴做起
    常用正则表达式收集
    优化网站加载速度的14个技巧
    关于easyUI的模态对话框
    关于jq ajax封装以及ajax上传Webapi
    Linux完全卸载Oracle的操作步骤
    Linux下安装oracle的一般步骤
    CentOS Linux上安装Oracle11g笔记
    Oracle中建库时报Exception in thread main
  • 原文地址:https://www.cnblogs.com/skillking/p/10020651.html
Copyright © 2011-2022 走看看