本文主要是介绍时间类问题 (主打心细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🤠 Acwing 1231.航班时间
3
17:48:19 21:57:24
11:05:18 15:14:23
17:21:07 00:31:46 (+1)
23:02:41 16:13:20 (+1)
10:19:19 20:41:24
22:19:04 16:41:09 (+1)
输出样例
04:09:05
12:10:39
14:22:05
👨🏫 思路(小学奥数:流水行船)
🥞 全部时间转换为以秒为单位,方便计算
⭐ 去:到达时间1 - 出发时间 2- 时差 = 飞行时间1
⭐ 回:到达时间1 - 出发时间2 + 时差 = 飞行时间2
⭐ 飞行时间1 + 飞行时间2 = (到达1 - 出发1 )+ (到达2 - 出发2 ) -> 再 除个 2 就是飞行时间了
👨🏫 java 的字符串处理
⭐ charAt(index)
⭐ subString(起点,终点(删))
⭐ '数字' - '0' :char 类型数字转 int (一次只能转换一位数)
⭐ split("分隔符")
😋 易错点
int h = time / 3600;int m = time % 3600 / 60;int s = time % 60;
import java.io.*;public class Main
{static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));public static void main(String[] args) throws IOException{int n = Integer.parseInt(in.readLine());while (n-- > 0){int time = 0;for (int i = 0; i < 2; i++){String line = in.readLine();int d = 0;int len = line.length();if (line.charAt(len - 1) == ')'){d = line.charAt(len - 2) - '0';// 注意:这里投机了,d 只能是一位数line = line.substring(0, len - 5);}// System.out.println(d);
// System.out.println(line);String[] dates = line.split(" ");String date1 = dates[0];String date2 = dates[1];time += getTime(date1, date2, d);}time /= 2;
// 以下请全文背诵int h = time / 3600;int m = time % 3600 / 60;int s = time % 60;
// System.out.printf("%02d:%02d:%02d\n", h, m, s);}}private static int getTime(String date1, String date2, int d){// 先把两个时间的 时分秒抠出来String[] arr = date1.split(":");int hour = Integer.parseInt(arr[0]);int minute = Integer.parseInt(arr[1]);int second = Integer.parseInt(arr[2]);
// 一去int s1 = getSecond(hour, minute, second);// 出发时间不会 +1 天// String[] arr1 = date2.split(":");hour = Integer.parseInt(arr1[0]);minute = Integer.parseInt(arr1[1]);second = Integer.parseInt(arr1[2]);
// 一回int s2 = getSecond(hour, minute, second);return s2 - s1 + d * 24 * 3600;}private static int getSecond(int hour, int minute, int second){
// System.out.println(d);
// System.out.println(hour + " " + minute + " " + second + " " + d);
// System.out.println();// return hour * 3600 + minute * 60 + second + d * 24 * 3600;return hour * 3600 + minute * 60 + second;}
}
这篇关于时间类问题 (主打心细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!