输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。
在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期
四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。
3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm
THU 14:04
import java.util.Scanner; public class Main { public static void main(String[] args) { String DAY[]={"MON ","TUE ","WED ","THU ","FRI ","SAT ","SUN "}; Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc.next(); String c = sc.next(); String d = sc.next(); char m[]=xiangtongday(a,b); //星期几 System.out.print(DAY[m[0]-'A']); //小时 if(m[1]<'9'&&m[1]>='0') System.out.print("0"+m[1]+":"); else System.out.print((m[1]-'A')+10+":"); //分钟 if(count(c,d)<10&&count(c,d)>=0) System.out.print("0"+count(c,d)); else System.out.print(count(c,d)); } //返回 c[0]==星期几 c[1]=日期 public static char[] xiangtongday(String a,String b){ char x[]; char y[]; x=a.toCharArray(); y=b.toCharArray(); int length; int count1=0; int flag=0; char c[] = new char [20]; if(a.length()<b.length()) length=a.length(); else length=b.length(); for(int i=0;i<length;i++) { if(x[i]==y[i]&&x[i]>='A'&&x[i]<='G') { c[count1]=x[i]; count1++; flag=i; break; } } for(int i=flag+1;i<=length;i++) { if(x[i]==y[i]&&((x[i]>='A'&&x[i]<='G')||x[i]>='0'&&x[i]<='9')) { c[count1]=x[i]; break; } } return c; } //返回分钟 public static int count(String a,String b) { char x[] = new char[60]; char y[] = new char[60]; int count1=0; int length=0; x = a.toCharArray(); y = b.toCharArray(); if (a.length() < b.length()) length = a.length(); else length = b.length(); for (int i = 0; i < length; i++) { if (x[i] == y[i] && x[i] >= 'a' && x[i] <= 'z') { count1 = i; break; } } return count1; } }是我不够细还是这个题目太细了啊,一个=号没加愣是看了半个小时才看出来😅
package io.github.haoranhsu; import java.util.Scanner; /** * 福尔摩斯的约会 * 题目描述 * 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb * s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”, * 因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的 * 字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字 * 母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。 * 现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。 * 输入描述: * 输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。 * 输出描述: * 在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一, * TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。 * 题目输入保证每个测试存在唯一解。 * 输入例子: * 3485djDkxh4hhGE * 2984akDfkkkkggEdsb * s&hgsfdk * d&Hyscvnm * 输出例子: * @author Hsu * @date 2020/11/3 * 其实还是用toCharArray比较好!! */ public class Pat1004 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String stringA = scanner.nextLine(); String stringB = scanner.nextLine(); String stringC = scanner.nextLine(); String stringD = scanner.nextLine(); StringBuilder builder = new StringBuilder(); int flag = 0; for(int i = 0; i < stringA.length() && i < stringB.length(); i++){ if(stringA.charAt(i) == stringB.charAt(i) && Character.isUpperCase(stringA.charAt(i))){ if(flag == 0) { builder.append(getDate(stringA.charAt(i) - 'A')); flag++; continue; } } //这里,后一个判断条件必须放在最后,因为parseInt对于字母不可用!! if(stringA.charAt(i) == stringB.charAt(i) && (((stringA.charAt(i) >= 'A' && stringA.charAt(i) <= 'N') || (Integer.parseInt(String.valueOf(stringA.charAt(i))) >= 0 && Integer.parseInt(String.valueOf(stringA.charAt(i))) <= 9)))){ if(flag == 1){ builder.append(" "); //这里不能传入stringA.charAt(i),因为这个是char!要输入的是int //或者-'0' builder.append(getTime(stringA.charAt(i))); builder.append(":"); break; } } } for(int i = 0; i < stringC.length(); i++) { if(stringC.charAt(i) == stringD.charAt(i) && Character.isLetter(stringC.charAt(i))){ String minute; minute = i < 10 ? "0"+ i : String.valueOf(i); builder.append(minute); break; } } System.out.println(builder.toString()); } private static String getDate(int date){ switch (date){ case 0: return "MON"; case 1: return "TUE"; case 2: return "WED"; case 3: return "THU"; case 4: return "FRI"; case 5: return "SAT"; case 6: return "SUN"; default: return null; } } private static String getTime(int num){ //又一个易错点! 要加上 (char),0要加上 ‘0’ if(Character.isDigit(num) && (char)num >= '0' && (char)num <= '9'){ String ans = "0".concat(String.valueOf((char)num)); return ans; } else { return String.valueOf(num - 'A' + 10); } } }
import java.util.Scanner; public clas***ain { // 3485djDkxh4hhGE // 2984akDfkkkkggEd*** // s&hgsfdk // d&Hyscvnm public static void main(String[] args) { Scanner scanner = new Scanner(System.in); StringBuffer buffer1 = new StringBuffer(scanner.next()); StringBuffer buffer2 = new StringBuffer(scanner.next()); StringBuffer buffer3 = new StringBuffer(scanner.next()); StringBuffer buffer4 = new StringBuffer(scanner.next()); String first = null; String second = null; int i = 0; while (true) { i++; if (buffer1.charAt(i) == buffer2.charAt(i) && (buffer2.charAt(i) >= 'A' && buffer2.charAt(i) <= 'Z')) { first = String.valueOf(buffer1.charAt(i)); break; } } while (true) { i++; if (buffer1.charAt(i) == buffer2.charAt(i)) { second = String.valueOf(buffer1.charAt(i)); break; } } // System.out.println(first+" "+second); String array[] = {"A", "B", "C", "D", "E", "F", "G"}; String arrayWeek[] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; String week = null; for (int j = 0; j < array.length; j++) { if (array[j].equals(first)) { week = arrayWeek[j]; } } int hour = 0; if (second.toCharArray()[0] >= '0' && second.toCharArray()[0] <= '9') { hour = new Integer(second).intValue(); } else { String s = second.toLowerCase(); hour = 10 + s.charAt(0) - "a".charAt(0); } // System.out.println(week+" "+hour); String s3 = buffer3.toString(); String s4 = buffer4.toString(); int minute = 0; for (int j = 0; j < s3.length(); j++) { if (s3.toCharArray()[j] == s4.toCharArray()[j]) { if( (s3.toCharArray()[j]>='a'&&s3.toCharArray()[j]<='z')||(s3.toCharArray()[j]>='A'&&s3.toCharArray()[j]<='Z')){ minute = j; break; } } } // System.out.println(minute); if (minute < 10||hour<10) { System.out.println(week + " " + String.format("%02d", hour) + ":" + String.format("%02d", minute)); } else { System.out.println(week + " " + hour + ":" + minute); } } }
private static final String[] days = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; private static final String dayCode = "ABCDEFG"; private static final String timeCode = "0123456789ABCDEFGHIJKLMN"; private static String weekDay = null; private static int HOUR = 0; private static int MINUNTE = 0; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String clude1 = scanner.nextLine(); String clude2 = scanner.nextLine(); String clude3 = scanner.nextLine(); String clude4 = scanner.nextLine(); boolean judgeFlag = false; boolean flag = false; for (int i = 0; i < clude1.length(); i++) { char v = clude1.charAt(i); if (isLetter(v) && !judgeFlag) { judgeFlag = true; } if (v == clude2.charAt(i)) { if (!judgeFlag) continue; if (isUppercase(v) && !flag) { weekDay = days[dayCode.indexOf(v)]; flag = true; } else { if (isRightData(v)) { if (v <= '9' && v >= '0') { HOUR = Character.getNumericValue(v); } else { HOUR = timeCode.indexOf(v); } } } } } for (int i = 0; i < clude3.length(); i++) { char v = clude3.charAt(i); if (isRightData(v) && v == clude4.charAt(i)) { MINUNTE = i; break; } } System.out.println(weekDay + " " + (HOUR / 10 >= 1 ? HOUR : ("0" + HOUR)) + ":" + (MINUNTE / 10 >= 1 ? MINUNTE : ("0" + MINUNTE))); } private static boolean isUppercase(char ch) { return 'A' <= ch && 'Z' >= ch; } private static boolean isLowCase(char ch) { return 'a' <= ch && 'z' >= ch; } private static boolean isLetter(char ch) { return (isLowCase(ch) || isUppercase(ch)); } private static boolean isRightData(char ch) { return (ch >= '0' && ch <= '9') || isLetter(ch); }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()) { String[] nn=new String[4]; for(int i=0;i<nn.length;i++) { nn[i]=in.next(); } int o=0; for(int i=0;i<nn[0].length();i++) { if(nn[0].charAt(i)==nn[1].charAt(i)&&(nn[0].charAt(i)<='Z'&&nn[0].charAt(i)>='A')) { String s=""; switch(nn[0].charAt(i)) { case 'A':s="MON";break; case 'B':s="TUE";break; case 'C':s="WED";break; case 'D':s="THU";break; case 'E':s="FRI";break; case 'F':s="SAT";break; case 'G':s="SUN";break; } System.out.print(s+" "); o=i; break; } } for(int i=o+1;i<nn[0].length();i++) { if(nn[0].charAt(i)==nn[1].charAt(i)) { if(nn[0].charAt(i)>='0'&&nn[0].charAt(i)<='9') { System.out.print("0"+(nn[0].charAt(i)-'0')+":"); } else { System.out.print((10+nn[0].charAt(i)-'A')+":"); } break; } } for(int i=0;i<nn[2].length();i++) { if(nn[2].charAt(i)==nn[3].charAt(i)&&(String.valueOf(nn[2].charAt(i)).toLowerCase().charAt(0)>='a'&&String.valueOf(nn[2].charAt(i)).toLowerCase().charAt(0)<='z')) { if(i>=10) { System.out.print(i); } else { System.out.print("0"+i); } break; } } } } }
还是要读题仔细 这题就是考个读题 注意两个字母不仅要判断大小写 是不是数字 还要判断具体字母范围
public class Test4_1 { public static void main(String[] args) {
String a, b, c, d;
Scanner in = new Scanner(System.in);
a = in.next();
b = in.next();
c = in.next();
d = in.next();
System.out.print(getDay(a,b)+" "+getHour(a,b)+":"+getMin(c,d));
} public static String getDay(String a, String b) { char day = getSameChar1(a, b).charAt(0); return charToDay(day);
} public static String getHour(String a, String b) { char hour = getSameChar1(a, b).charAt(1); return charToHour(hour);
} public static String getMin(String a, String b) { int index = 0; for (int i = 0; i min(a.length(), b.length()); i++) { char a1 = a.charAt(i); char a2 = b.charAt(i); if ((a1 == a2) && isLetter(a1)) {
index = i; break;
}
}
String result = "";
String.format("%02d", index);
result = String.format("%02d", index); return result;
} //字母转化为星期天的缩写 public static String charToDay(char a) {
String day = ""; switch (a) { case 'A':
day = "MON"; break; case 'B':
day = "TUE"; break; case 'C':
day = "WED"; break; case 'D':
day = "THU"; break; case 'E':
day = "FRI"; break; case 'F':
day = "SAT"; break; case 'G':
day = "SUN"; break; default: break;
} return day;
} public static String charToHour(char a) {
String result = ""; if (isUpperCase(a)) {
result = (a - 55) + "";
} else {
result = "0" + a;
} return result;
} public static String getSameChar1(String a, String b) { int len = Math.min(a.length(), b.length()); char day = 'a'; char hour = 'a'; int flag = 0; for (int i = 0; i char a1 = a.charAt(i); char b1 = b.charAt(i); if (isBetweenAandG(a1) && (a1 == b1)) {
day = a1;
flag = i; break;
}
} for (int i = flag + 1; i char a1 = a.charAt(i); char b1 = b.charAt(i); if ((isNum(a1) || isBetweenAandN(a1)) && (a1 == b1)) {
hour = a1; break;
}
} return "" + day + hour;
} public static boolean isUpperCase(char a) { return a >= 'A' && a 'Z';
} public static boolean isNum(char a) { return a >= '0' && a '9';
} public static boolean isBetweenAandN(char a) { return a >= 'A' && a 'N';
} public static boolean isBetweenAandG(char a) { return a >= 'A' && a 'G';
} public static boolean isLetter(char a) { return isUpperCase(a) || (a >= 'a' && a 'z');
}
}
/** * * @author ChopinXBP * 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。 * 大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04” * 前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E', * 那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、 以及大写字母A到N表示); * 后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串 * * 注意点:1.要对应位置的字符相同才算成对,2.注意序列长度不同,3.注意三个元素的判定依据 * */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Scanner; public class HolmesCode { public static Scanner in = new Scanner(new BufferedInputStream(System.in)); public static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out)); public static ArrayList<String> str = new ArrayList<>(); public static String[] week = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" }; public static int date = -1; public static int hour = -1; public static int min; public static void main(String[] args) { // TODO Auto-generated method stub Read(); Decode(); Print(); out.close(); in.close(); } public static void Read() { for (int i = 0; i < 4; i++) { String string = in.nextLine(); str.add(string); } } public static void Decode() { // 存放前两个序列的相同元素(注意序列长度不同) ArrayList<Character> sameword = new ArrayList<>(); for (int i = 0; i < Math.min(str.get(0).length(), str.get(1).length()); i++) { char word = str.get(0).charAt(i); char word2 = str.get(1).charAt(i); if (word == word2 && ((word >= 'A' && word <= 'Z') || (word >= '0' && word <= '9'))) { sameword.add(word); } } // 解码日期和小时 for (int i = 0; i < sameword.size(); i++) { Character word = sameword.get(i); if (date == -1) { if (word >= 'A' && word <= 'Z') { date = word - 'A'; } } else { if (word >= 'A' && word <= 'N') { hour = word - 'A' + 10; break; } else if (word >= '0' && word <= '9') { hour = Integer.parseInt(word.toString()); break; } } if (hour != -1) break; } // 解码分钟 for (int i = 0; i < Math.min(str.get(2).length(), str.get(3).length()); i++) { char word = str.get(2).charAt(i); char word2 = str.get(3).charAt(i); if (word == word2 && ((word >= 'A' && word <= 'Z') || (word >= 'a' && word <= 'z'))) { min = i; break; } } } public static void Print() { out.print(week[date] + ' '); if (hour < 10) { out.print('0'); } out.print(hour); out.print(':'); if (min < 10) { out.print('0'); } out.print(min); } }
import java.util.Scanner; /** * 福尔摩斯的约会 */ public class Main { static char[] chars = {'A', 'B', 'C', 'D', 'E', 'F', 'G'}; static String[] weeks = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; public static void main(String[] args) { Scanner s = new Scanner(System.in); String[] arr = new String[4]; int day = 0; int hour = 0; int minute = 0; for (int i = 0; i length; i++) { arr[i] = s.nextLine(); } int len1 = Math.min(arr[0].length(), arr[1].length()); int len2 = Math.min(arr[3].length(), arr[2].length()); int i; for (i = 0; i < len1; i++) { if (arr[0].charAt(i) > 64 && arr[0].charAt(i) < 91) { if (arr[0].charAt(i) == arr[1].charAt(i)) { for (int k = 0; k chars.length; k++) { if (arr[0].charAt(i) == chars[k]) { day = k; break; } } break; } } } for (i=i+1; i < len1; i++) { if (arr[0].charAt(i) > 64 && arr[0].charAt(i) < 79 || arr[0].charAt(i) > 47 && arr[0].charAt(i) < 58) { if (arr[0].charAt(i) == arr[1].charAt(i)) { if (arr[0].charAt(i) > 47 && arr[0].charAt(i) < 58) { hour = arr[0].charAt(i) - 48; } else { hour = arr[0].charAt(i) - 55; } break; } } } //分钟 for (i = 0; i <len2; i++) { if (arr[2].charAt(i) > 64 && arr[2].charAt(i) < 91 || arr[2].charAt(i) > 96 && arr[2].charAt(i) < 123) { if (arr[2].charAt(i) == arr[3].charAt(i)) { minute = i; break; } } } String hours = hour 10 ? "0" + hour : "" + hour; String min = minute 10 ? "0" + minute : "" + minute; System.out.println(weeks[day] + " " + hours + ":" + min); } }
有没有大佬可以直接键值对写的? import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Pattern; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; int i=0; String[] lineData=new String[5]; //获取数据 while (i<4) {//使用readLine方法,一次读一行 str = br.readLine(); if(str.equals("")) { continue; }else{ lineData[i] = str; i++; } } //进行前两个的匹配得到准确的日期前两位 char[] getWeekOne=lineData[0].toCharArray(); char[] getWeekTwo=lineData[1].toCharArray(); char tempweek=' '; char temphour=' '; int firstOrTwo=1; for(int j=0;j<getWeekOne.length;j++){ if(getWeekOne[j]==getWeekTwo[j]) { if (firstOrTwo == 1) { if (Pattern.matches(("[A-Z]"), String.valueOf(getWeekOne[j]))) { tempweek = getWeekOne[j]; firstOrTwo++; } } else { if (Pattern.matches(("[0-9a-zA-Z]"), String.valueOf(getWeekOne[j]))) { temphour=getWeekOne[j]; break; } } } } //准确分钟 char[] getMinuteOne=lineData[2].toCharArray(); char[] getMinuteTwo=lineData[3].toCharArray(); String finalMinute=""; for(int j=0;j<getMinuteOne.length&&j<getMinuteTwo.length;j++){ if(getMinuteOne[j]==getMinuteTwo[j]){ if (Pattern.matches(("[1-9a-zA-Z]"), String.valueOf(getMinuteOne[j]))) { if (j < 10) { finalMinute = "0" + j; } else { finalMinute = String.valueOf(j); } break; } } } //确定最终的时间 String finalweek=""; String finalhour=""; switch(tempweek){ case 'A':finalweek="MON";break; case 'B':finalweek="TUE";break; case 'C':finalweek="WED";break; case 'D':finalweek="THU";break; case 'E':finalweek="FRI";break; case 'F':finalweek="SAT";break; case 'G':finalweek="SUN";break; } switch(temphour){ case '0':finalhour="00";break; case '1':finalhour="01";break; case '2':finalhour="02";break; case '3':finalhour="03";break; case '4':finalhour="04";break; case '5':finalhour="05";break; case '6':finalhour="06";break; case '7':finalhour="07";break; case '8':finalhour="08";break; case '9':finalhour="09";break; case 'A':finalhour="10";break; case 'B':finalhour="11";break; case 'C':finalhour="12";break; case 'D':finalhour="13";break; case 'E':finalhour="14";break; case 'F':finalhour="15";break; case 'G':finalhour="16";break; case 'H':finalhour="17";break; case 'I':finalhour="18";break; case 'J':finalhour="19";break; case 'K':finalhour="20";break; case 'L':finalhour="21";break; case 'M':finalhour="22";break; case 'N':finalhour="23";break; } System.out.println(finalweek+" "+finalhour+":"+finalMinute); } }
可以AC,这个题目最重要的就是理解题意,第一个是判断大写字母,第二个是只判断字符,可以是大写字母,当然也可以是任意的字符,只是想说这个题目出得真随便,应该是英语翻译过来的 import java.util.Scanner;
public class Main { @SuppressWarnings("resource") public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] stringArray = new String[4]; for (int i = 0; i < stringArray.length; i++) { stringArray[i] = in.next(); // 这里真是坑苦我了,next()代表的是你接下来所有输入内容的第一项,nextline()代表如果你输入了一行, // 那就是这一行,没有第几项的说法 } // 现在已经拿到了四个字符串,开始进行处理 char weekday = '0'; // 建立一个字符类型的数组,存储第一个相同的字符与第二个相同的字符 char[] charArray = new char[2]; int charArrayIndex = 0;// 给字符类型的数组建立计数器 char finalFirstChar = 0; char finalSecondChar = 0; // 这里要明确的是第二个相同的字符 // 这里的相等是上下同位置相等 // 每一次循环过来这个i总会变了的,所以得到的值一直在变 int i; for (i = 0; i < stringArray[0].length(); i++) { if (stringArray[0].charAt(i) >= 'A' && stringArray[0].charAt(i) <= 'Z') { for (int j = 0; j < stringArray[1].length(); j++) { if (stringArray[0].charAt(i) == stringArray[1].charAt(j) && i == j) { charArray[0] = (char) stringArray[0].charAt(i); finalFirstChar = charArray[0]; break; } } } if (charArray[0] != '\0') { break; } } for (int i1 = i+1; i1 < stringArray[0].length(); i1++) { for (int j = 0; j < stringArray[1].length(); j++) { if (stringArray[0].charAt(i1) == stringArray[1].charAt(j) && i1 == j) { charArray[1] = (char) stringArray[0].charAt(i1); finalSecondChar = charArray[1]; break; } } if (charArray[1] != '\0') { break; } } // 做到这一步,已经拿到了星期几的,可以对这个字母做一个减去A的操作,得到的结果加一就是星期几 int weekdayNum = finalFirstChar - 'A'; String DAY = null;// 这就是星期几的前三个字母 switch (weekdayNum + 1) { case 1: DAY = "MON"; break; case 2: DAY = "TUE"; break; case 3: DAY = "WED"; break; case 4: DAY = "THU"; break; case 5: DAY = "FRI"; break; case 6: DAY = "SAT"; break; case 7: DAY = "SUN"; break; default: break; } // System.out.println(DAY); // 星期几已经可以顺利输出,接下来研究第二个相同的字符 char secondCharacter = finalSecondChar;// 这是第二个相同的字符 String hour = null; if (secondCharacter >= '0' && secondCharacter <= '9') { hour = "0" + secondCharacter; } else if (secondCharacter >= 'A' && secondCharacter <= 'N') { hour = String.valueOf(secondCharacter - 'A' + 10); } // System.out.println(hour); // 届此小时也已经打印出来了 int minute = 0; String minuteString = null; for (int i1 = 0; i1 < stringArray[2].length(); i1++) { if ((stringArray[2].charAt(i1) >= 'A' && stringArray[0].charAt(i1) <= 'Z') || (stringArray[2].charAt(i1) >= 'a' && stringArray[0].charAt(i1) <= 'z')) { for (int j = 0; j < stringArray[3].length(); j++) { if (stringArray[2].charAt(i1) - stringArray[3].charAt(j) == 0&&i1==j) { minute = i1; break; } } } if (minute != 0) { break; } } if (minute < 10) { minuteString = "0" + String.valueOf(minute); } else { minuteString = String.valueOf(minute); } System.out.println(DAY + " " + hour + ":" + minuteString); }
}
官网AC,供参考。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String[] temp = new String[4];
for (int i = 0; i < 4; i++) {
temp[i] = input.readLine();
if (temp[i].length() > 60 || temp[i] == null)
System.exit(0);
}
input.close();
getTime(temp);
}
private static void getTime(String[] str) {
int length2 = str[0].length() < str[1].length() ? str[0].length() : str[1].length();
int length4 = str[2].length() < str[3].length() ? str[2].length() : str[3].length();
char DAY = ' ', HH = ' ';
for (int i = 0, j = 0; i < length2; i++) {
if (j == 0) {
if (str[0].charAt(i) == str[1].charAt(i) && str[0].charAt(i) <= 'G' && str[0].charAt(i) >= 'A') {
DAY = str[0].charAt(i);
j++;
}
}
else {
if (str[0].charAt(i) == str[1].charAt(i) && (str[0].charAt(i) >= '0' && str[0].charAt(i) <= '9'
|| str[0].charAt(i) <= 'N' && str[0].charAt(i) >= 'A')) {
HH = str[0].charAt(i);
break;
}
}
}
if (DAY == ' ' || HH == ' ')
System.exit(0);
int MM = -1;
for (int i = 0; i < length4; i++) {
if (str[2].charAt(i) == str[3].charAt(i) && (str[2].charAt(i) <= 'Z' && str[2].charAt(i) >= 'A'
|| str[2].charAt(i) <= 'z' && str[2].charAt(i) >= 'a')) {
MM = i;
break;
}
}
if (MM == -1)
System.exit(0);
printer(DAY, HH, MM);
}
private static void printer(char DAY, char HH, int MM) {
switch (DAY - 'A') {
case 0:
System.out.print("MON ");
break;
case 1:
System.out.print("TUE ");
break;
case 2:
System.out.print("WED ");
break;
case 3:
System.out.print("THU ");
break;
case 4:
System.out.print("FRI ");
break;
case 5:
System.out.print("SAT ");
break;
case 6:
System.out.print("SUN ");
break;
}
if (HH >= '0' && HH <= '9') {
System.out.print("0" + HH);
}
else {
System.out.print(10 + HH - 'A');
}
System.out.printf(":%02d\n", MM);
}
}
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); String str0=input.next(); String str1=input.next(); String str2=input.next(); String str3=input.next(); String text = text(str0,str1,str2,str3); System.out.println(text); } private static String text (String str0,String str1,String str2,String str3) { StringBuffer s =new StringBuffer(); int num=0; int sum=0; String[] strs={"MON","TUE","WED","THU","FRI","SAT","SUN"}; a:for(int i=0;i<str0.length();i++){ char a=str0.toCharArray()[i]; if(a>=65 && a<72){ for(int j=0;j<str1.length();j++){ char b=str1.toCharArray()[j]; if(b==a){ num=i+1; sum=j+1; s.append(strs[a-65]); break a; } } } } s.append(" "); a:for(int i=num;i<str0.length();i++){ char a=str0.toCharArray()[i]; if((a>47 && a<58)||( a>64 && a<79)){ for(int j=sum;j<str1.length();j++){ char b=str1.toCharArray()[j]; if(b==a){ s.append(a-48>10?a-55:"0"+(a-48)); break a; } } } } s.append(":"); a:for(int i=0;i<str2.length();i++){ char a=str2.toCharArray()[i]; if((a>64 && a<91) || (a>97 && a<123)){ char b=str3.toCharArray()[i]; if(b==a){ s.append(i>9?i:"0"+i); break a; } } } return s.toString(); } }最简单的思路
package newcode;
import java.util.Scanner;
import java.util.regex.Pattern;
public class SherlockDating {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String array[] = new String[4];
for (int i = 0; i < 4; i++) {
array[i] = scanner.nextLine().trim();
}
char a = findFirstDouble(array[0], array[1], true);
array[0] = array[0].substring(array[0].indexOf(a) + 1);
array[1] = array[1].substring(array[1].indexOf(a) + 1);
char b = findFirstDouble(array[0], array[1], false);
int c = findFirstDouble(array[2], array[3]);
String result = "";
switch (a) {
case 'A':
result += "MON ";
break;
case 'B':
result += "TUS ";
break;
case 'C':
result += "WED ";
break;
case 'D':
result += "THU ";
break;
case 'E':
result += "FRI ";
break;
case 'F':
result += "STA ";
break;
case 'G':
result += "SUN ";
break;
default:
break;
}
if (Character.isDigit(b))
result += ("0" + b);
else
result += b - 55;
result += ":";
if (c < 10)
result += ("0" + c);
else
result += c;
System.out.println(result);
scanner.close();
}
static char findFirstDouble(String a, String b, boolean whetherCapital) {
int position = -1;
for (int i = 0; i < a.length(); i++) {
boolean judge = whetherCapital ? Pattern.compile("[A-Z]").matcher(String.valueOf(a.charAt(i))).matches()
: true;
if (judge && (a.charAt(i) == b.charAt(i))) {
position = i;
break;
}
}
return a.charAt(position);
}
static int findFirstDouble(String a, String b) {
int position = -1;
for (int i = 0; i < a.length(); i++) {
boolean judge = Pattern.compile("[a-zA-Z]").matcher(String.valueOf(a.charAt(i))).matches();
if (judge && a.charAt(i) == b.charAt(i)) {
position = i;
break;
}
}
return position;
}
}
public class Question4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] chars1 = sc.next().toCharArray(); char[] chars2 = sc.next().toCharArray(); char[] chars3 = sc.next().toCharArray(); char[] chars4 = sc.next().toCharArray(); sc.close(); String[] days = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" }; String day="MON"; String hour="00"; // 对前两个字符数组进行比较 int len1 = chars1.length; int len2 = chars2.length; int min = len1 < len2 ? len1 : len2; int count = 0; // 遇到相同字符的次数 for (int i = 0; i < min; i++) { if (chars1[i] == chars2[i]) { if (count == 0 && !Character.isDigit(chars1[i]) && chars1[i] < 97) { int d = Character.toUpperCase(chars1[i]) - 65; day = days[d]; count++; } else if (count == 1) { int h; if (!Character.isDigit(chars1[i])) { h = Character.toUpperCase(chars1[i]) - 64 + 9; } else { h = chars1[i] - 48; } hour = h+""; break; } } } String minute="00"; // 对后两个字符串进行比较 int len3 = chars3.length; int len4 = chars4.length; int min2 = len3 < len4? len3 : len4; for (int i = 0; i < min2; i++) { if(chars3[i]==chars4[i] && Character.isAlphabetic(chars3[i])){ minute=i+""; break; } } hour=hour.length()==1?0+hour:hour; minute=minute.length()==1?0+minute:minute; System.out.printf("%s %s:%s",day,hour,minute); } }