1. 程式人生 > 其它 >PAT1014 福爾摩斯的約會 Java 脫坑手記

PAT1014 福爾摩斯的約會 Java 脫坑手記

技術標籤:PAT學習java演算法

PAT1014 福爾摩斯的約會 Java 脫坑手記

題目分析

題目給出4行字串

針對前兩個字串得出星期 與 小時

  • 星期: 第 1 對相同的大寫英文字母
  1. 在相同的位置是相同的大寫英文字母
  2. 因為一週七天,隱含 大寫英文字母範圍A-G
  3. 對A-G進行Day的轉換輸出
  • 小時: 第2對相同的字元 (一天 0—23 由 0-9和A-N表示)
  1. 在相同的位置相同的字元
  2. 字元範圍在 0-9 以及 A-N
  3. 限定格式 DAY HH:MM 0-9需要進行補 0 與A-N的轉化10-23

針對後兩個字串得出分鐘

  • 分鐘: 後面兩字串第 1 對相同的英文字母
  1. 在相同的位置的相同英文字母
  2. 英文字母範圍 a-z或者A-Z
  3. 分鐘由字串的位置確定,缺位數要 補 0

input: 4 行中分別給出 4 個非空、不包含空格、且長度不超過 60 的字串

output:約會的時間,格式為 DAY HH:MM
MON 星期一 TUE 星期二 WED 星期三 THU 星期四 FRI 星期五 SAT 星期六 SUN 星期日

題目輸入保證每個測試存在唯一解。

程式碼

import java.util.Scanner;

/**
 * @ClassName $1014
 * @Description: https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560
 *                          1014 福爾摩斯的約會 (20分)
 *
 * @Author: zyb
 * @Date: 2021-01-06
 * @Version:v1.0
 */
public class $1014 { public static Scanner input; public static void main(String[] args) { input = new Scanner(System.in); String h1 = input.nextLine(); String h2 = input.nextLine(); String h3 = input.nextLine(); String h4 = input.nextLine(); int
number = 0; int length = h1.length() < h2.length() ? h1.length() : h2.length(); String[] week = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; for (int i = 0; i < length; i++) { /*第一個對相等的大寫字母代表 周幾,在同位置 且一週七天 A-G*/ if (h1.charAt(i) >= 'A' && h1.charAt(i) <= 'G' && h1.charAt(i) == h2.charAt(i)) { System.out.print(week[h1.charAt(i) - 'A'] + " "); //輸出 周 number = i; break; } } /* 查詢第二對相同的字元 計算小時*/ for (int i = number + 1; i < length; i++) { /*24小時為0-9 以及A-N表示*/ if (h1.charAt(i) == h2.charAt(i)) { if (h1.charAt(i) >= '0' && h1.charAt(i) <= '9') { System.out.print("0" + h1.charAt(i) + ":"); //輸出 小時(前端補上0) break; } if (h1.charAt(i) >= 'A' && h1.charAt(i) <= 'N') { System.out.print(h1.charAt(i) - 'A' + 10 + ":"); //輸出 小時(超過十 英文字母轉化) break; } } } length = h3.length() < h4.length() ? h3.length() : h4.length(); /*進行分鐘計算 查詢一對相等的英文字母(包含大小寫)下標為分鐘點*/ for (int i = 0; i < length; i++) { /*補充上 && 優先順序 高於 || 右邊||運算要加上括號 進行優先運算*/ if (h3.charAt(i) == h4.charAt(i) && ((h3.charAt(i) >= 'A' && h3.charAt(i) <= 'Z') || (h3.charAt(i) >= 'a' && h3.charAt(i) <= 'z'))) { if (i < 10) System.out.print("0" + i); //輸出 分鐘(前端補上0) else System.out.print(i); break; } } } }

記下 筆記: && 與 || && 優先順序高於
坑死的錯誤
在這裡插入圖片描述