时间类问题 (主打心细)

编程入门 行业动态 更新时间:2024-10-27 09:32:49

时间类问题 (主打<a href=https://www.elefans.com/category/jswz/34/1676124.html style=心细)"/>

时间类问题 (主打心细)

🤠 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;}
}

更多推荐

时间类问题 (主打心细)

本文发布于:2024-02-10 15:53:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1676120.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:心细   主打   时间

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!