【华为OD机试真题C++】最大时间【2022Q4|100分】-创新互联

■ 题目描述

成都创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序设计,十年建站对自上料搅拌车等多个行业,拥有多年的网站制作经验。

【大时间】

给定一个数组,里面有 6 个整数,求这个数组能够表示的大 24 进制的时间是多少,输出这个时间,无法表示输出 invalid。

输入描述

输入为一个整数数组,数组内有六个整数。

输入整数数组长度为 6,不需要考虑其它长度,元素值为 0 或者正整数,6 个数字每个数字只能使用一次。

输出描述

输出为一个 24 进制格式的时间,或者字符串”invalid“。

备注:

输出时间格式为 xxxxx 式。

示例 1   输入输出示例仅供调试,后台判题数据一般不包含示例

输入

[0,2,3,0,5,6]

输出

23:56:00

C++代码实现:

#includeusing namespace std;

void SplitInt(string input, vector&output, char patten)
{
    string one_word;
    int j = 0;
    input += patten;
    for (int i = 0; i< input.size(); i++) {
        if (input[i] == patten) {
            one_word = input.substr(j, i - j);
            if (!one_word.empty()) {
                output.push_back(stoi(one_word));
            }
            one_word.clear();
            j = i + 1;
        }
    }
}

string LargestTimeFromDigits(vector&vec)
{
    sort(vec.begin(), vec.end());
    string maxTime;
    bool hasNextPermutation = true;
    while (hasNextPermutation) {
        string hour = to_string(vec[0]) + to_string(vec[1]);
        string minute = to_string(vec[2]) + to_string(vec[3]);
        string second = to_string(vec[4]) + to_string(vec[5]);
        hasNextPermutation = next_permutation(vec.begin(), vec.end());
        auto curTime = hour + ":" + minute + ":" + second;
        if (stoi(hour) >= 24 || stoi(minute) >= 60 || stoi(second) >= 60) {
            continue;
        }
        maxTime = max(maxTime, curTime);
    }
    return maxTime;
}

int main(int argc, char **argv)
{
    string input;
    while (getline(cin, input)) {
        if (!input.empty()) {
            input = input.substr(1, input.size() - 1);
            vectorvec;
            SplitInt(input, vec, ',');
            string time_s = LargestTimeFromDigits(vec);
            !time_s.empty() ? cout<< time_s<< endl : cout<< "invalid"<< endl;
        }
    }
    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:【华为OD机试真题C++】最大时间【2022Q4|100分】-创新互联
本文网址:http://azwzsj.com/article/dgjhcj.html