华为编程题目(实时更新)

慈云数据 2024-05-28 技术支持 24 0

1.大小端整数

计算机中对整型数据的表示有两种方式:大端序和小端序,大端序的高位字节在低地址,小端序的高位字节在高地址。例如:对数字 65538,其4字节表示的大端序内容为00 01 00 02,小端序内容为02 00 01 00。

现输入一个字符串表示的十进制整数(含负数),请分别输出以4字节表示的大端序和小端序:

  • 负数以补码形式表示。
  • 如果输入的整数的值超出 [-2^31, 2^32) 范围,则输出字符串overflow。
    解答要求

    时间限制: C/C++ 1000ms, 其他语言:2000ms

    内存限制: C/C++ 64MB, 其他语言:128MB

    输入

    十进制整数,以负号-开头表示负数,其它为正整数;数字长度范围:[1,32]。

    输入数字不含前导零。

    输出

    大端序 + \n + 小端序;或字符串overflow。

    大端序和小端序的输出格式:每个字节以两位16进制数字表示(16进制数中A-F要大写),字节之间以单空格分隔。

    样例1

    复制输入:

    -10

    复制输出:

    FF FF FF F6 F6 FF FF FF

    解释:

    含负号表示为负整数。

    该负整数的补码表示为 FF FF FF F6,其对应大端序和小端序内容分别为FF FF FF F6 和 F6 FF FF FF。

    按输出格式要求输出其大端序和小端序内容,中间加换行符。

    样例2

    复制输入:

    4027691818

    复制输出:

    F0 11 B3 2A 2A B3 11 F0

    解释:

    输入 4027691818 为正整数,按输出格式要求输出其大端序和小端序内容,中间加换行符。

    样例3

    复制输入:

    1234567890123456789012345678900

    复制输出:

    overflow

    解释:

    输入数字超过[-2^31, 2^32) 范围,因此输出 overflow 。

    C++代码:
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    using namespace std;
    class Solution {
    public:
        // 待实现函数,在此函数中填入答题代码;
        string GetHexString(long long input)
        {
    // Check for overflow
            if (input = 4294967296LL) {
                return "overflow";
            }
            // Convert input to unsigned int
            unsigned int value = static_cast(input);
            // Convert unsigned int to big endian and little endian strings
            stringstream bigEndianStream;
            bigEndianStream {"idle", -1}, {"busy", 1}, {"no-response", 2}, {"unreachable", 3}};
            
            // 存储用户设置的呼叫转移
            for (auto &reg : regCallForwardNums) {
                callForwards[reg.first] = reg.second;
            }
            
            if (status == "idle" && callForwards.count(0) == 0) {
                // 用户状态为idle,且无无条件转移type=0
                return "success";
            }
            if (callForwards.count(0)) {
                // 检查是否有无条件转移
                return callForwards[0];
            } else if (statusMap.count(status) && callForwards.count(statusMap[status])) {
                // 检查用户状态对应的转移
                return callForwards[statusMap[status]];
            } else if (callForwards.count(4)) {
                // 检查默认转移
                return callForwards[4];
            }
            
            // 没有匹配的转移则失败
            return "failure";
        }
    };
    // 以下为考题输入输出框架,此部分代码不建议改动
    inline string ReadLine()
    {
        string line;
        getline(cin, line);
        return line;
    }
    inline vector
    public:
        // 待实现函数,在此函数中填入答题代码;
        int GetCountOfSubString(const string &input)
        {
            if (input.empty()) 
            {
                return 0;
            } 
            int n = input.size();
            int lastPos[26];
            fill_n(lastPos, 26, -1); // 初始化每个字符的最后位置为-1
            long long totalCount = 0; // 结果可能很大,使用更大的存储类型
            int start = 0; // 窗口的起始位置
            for (int end = 0; end 
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon