题解 | #选牛比赛#

选牛比赛

https://www.nowcoder.com/practice/75df501809d14532a00e747666587873

#include <cstdlib>
#include <string>
class Solution {
  public:
    int countEligibleCows(vector<string>& digits, int n) {
        // write code here
        string str_n = to_string(n);
        int num_wei = str_n.length(), num_digits = digits.size(), counter = 0;
        for (int i = 0; i < num_wei; i++) {
            char wei = str_n[i];
            int j = 0;
            while (j < num_digits) {
                if (digits[j][0] >= wei) {
                    break;
                }
                j++;
            }
            if (num_wei - i - 1 != 0) {
                counter += (j + 1) * pow(num_digits, num_wei - i - 1);
            }
            // 如果数组中的所有元素都大于当前位的值,则计算后面位数的排列组合并返回。如果等于则进入下一次循环
            if (j < num_digits && digits[j][0] > wei) {
                for (int k = i + 1; k < num_wei; k++) {
                    if (num_wei - k - 1 != 0) {
                        counter += pow(num_digits, num_wei - k - 1);
                    }
                }
                break;
            }
        }
        return counter;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务