大疆创新笔试-机器学习



1. n个字母A m个字母B 组合成一个n m长字符串 满足连续3个不为同一字符串

题目告诉我们输入一定是存在这样的字符串的,可以不用做异常输入判断。
首先对比n 和 m,知道两者中的较大值 long_num 和 较小值 short_num,对应的字符是 item1 和 item2, 如果
long_num - short_num > 1
字符串尾加两个item1 和 一个 item2;
否则 字符串尾加一个item1 和 一个 item2

#include <iostream> 
#include <string> 
#include <algorithm> 
using namespace std; 
int main(){ 
    int n, m; cin >> n >> m; 
    string result{}; 
    string item1{ 'A' }, item2{ 'B' };
    int long_num = n, short_num = m; 
    if (n < m)
        item1 = 'B', item2 = 'A', long_num = m, short_num = n; 
    while (long_num > 0 && short_num > 0){ 
        if (long_num - short_num > 1)
            result  = item1   item1   item2, long_num -= 2, short_num--; 
        else 
            result  = item1   item2, long_num--, short_num--; 
    } 
    while (long_num)
        result  = item1, long_num--; 
    while (short_num)
        result  = item2, short_num--; 
    cout << result << endl; 
    return 0;
}

2. 一个整数N各个位上的数字重新组合是否构成2的n次方。

leetcode 原题
https://leetcode-cn.com/problems/reordered-power-of-2/

2的整数次幂,二进制形式都是首位是1,后面都是0,所以,首先记录输入数的二进制形式的位数,然后遍历至2的32次幂,1是2的0次幂。

bool reorderedPowerOf2(int N) {
    long c = counter(N); 
    for (int i = 0; i < 32; i  ) 
        if (counter(1 << i) == c) 
            return true; 
    return false;
    } 

long counter(int N) { 
    long res = 0; 
    for (; N; N /= 10
        res  = pow(10, N % 10); 
    return res;
}

#leetcode##大疆##笔试题目#
全部评论

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
2 21 评论
分享
牛客网
牛客企业服务