【编程题目 |200分】解密犯罪时间【2021, 2022 H1 考试题】
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,
编码后请点击”保存并调试“按钮进行代码提交。
■ 题目描述
【解密犯罪时间】
警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。
根据警察和线人的约定,为了隐蔽,该时间是修改过的,
解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。
每个出现数字都可以被无限次使用。
输入描述
形如HH:SS字符串,表示原始输入。
输出描述
形如HH:SS的字符串,表示推理处理的犯罪时间。
备注
1.可以保证现任给定的字符串一定是合法的。
例如,“01:35”和“11:08”是合法的,“1:35”和“11:8”是不合法的。
2.最近的时刻可能在第二天。
示例
20:12得到20:20
23:59得到22:22
12:58得到15:11
18:52得到18:55
23:52得到23:53
09:17得到09:19
07:08得到08:00
代码实现
C++解法一
#include <bits/stdc++.h> using namespace std; void SplitStrings_Solution1(string input, vector<string> &output, string pattern) { string::size_type pos; input += pattern; for (int i = 0; i < input.size(); i++) { pos = input.find(pattern, i); if (pos < input.size()) { string temp = input.substr(i, pos - i); if ((temp != pattern) && (!temp.empty())) { output.push_back(temp); } i = pos + pattern.size() - 1; } } }
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看C++解法二
#include<bits/stdc++.h> using namespace std; int digit(string &str, int start, int len) { int ret = 0; for (int i = start; i < start + len; ++i) { ret = ret * 10 + str[i] - '0'; }
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看C++解法三
#include<bits/stdc++.h> using namespace std; int main() { string inupt_str; cin >> inupt_str;
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看JAVA解法一
import java.util.ArrayList; import java.util.Comparator; public class DecodeCrimeTime { public static String func(String time) { char[] chars = time.toCharArray(); ArrayList<Integer> nums = new ArrayList<>(); for (char c : chars) { if (c != ':') { nums.add(c - '0'); } }
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看JAVA解法二
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine();
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python解法一
def decrypt_crime_time(s): nums_list = [int(i) for i in s if i != ":"] H, M = [int(i) for i in s.split(":")]
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看Python解法二
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看JavaScript
let s = readLine(); let errorTime = Number(s.substring(0,2)+s.substring(3));
剩余50%内容,订阅会员后查看
此处内容需要权限查看
会员免费查看