注意事项:
解题思路-本题主要是对字符进行操作,A对应的ASCII位65,B的为66 依次加1,
详细解题思路看代码
package pta; import java.util.Scanner; /** * @author lqw * @date 2021/8/1-10:54 上午 */ public class P1014 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] arrStr = new String[4]; //创建一个数组用来接收相同的字符 for (int i = 0; i < 4; i++) { arrStr[i] = sc.next(); } //对数组中对字符串进行解析 char[] c1 = arrStr[0].toCharArray();//接收的第一个字符 char[] c2 = arrStr[1].toCharArray();//接收的第二个字符 char[] c3 = arrStr[2].toCharArray();//接收的第三个字符 char[] c4 = arrStr[3].toCharArray();//接收的第四个字符 String[] weeks={"MON","TUE","WED","THU","FRI","SAT","SUN"}; int length1 = c1.length > c2.length ? c2.length : c1.length;//判断第一个字符串和第二个字符穿的长度 int length2 = c3.length > c4.length ? c4.length : c3.length;//判断第二个字符串和第三个字符穿的长度 boolean flag = false;//用来判断第一组字符进行相同字符的标志符 for (int i = 0; i < length1; i++) { if (('A' <= c1[i] && c1[i] <= 'G')) { if (c1[i] == c2[i]) { if (!flag) { System.out.print(weeks[c1[i]-'A']+" ");//输出星期几 flag=true;//找到满足星期几的大写字母-改变标志符 continue;//跳出循环 } } } if ((c1[i] >= '0' && c1[i] <= '9') || (c1[i] >= 'A' && c1[i] <= 'N')) { if (flag) { if (c1[i] == c2[i]) {//第一组字符中第二相同的数字或者大写字母 由A-N if (c1[i] >= '0' && c1[i]<= '9') {//0-9 System.out.print("0" + c1[i] + ":"); } else {//A-N System.out.print((c1[i] - 'A') + 10 + ":"); } break;//结束循环-提高效率-防止后面在有相等的字符 } } } } for (int i = 0; i < length2; i++) {//第二组字符进行比较 if (Character.isUpperCase(c3[i]) || Character.isLowerCase(c3[i])) {//如果字符是大写字母或者小写字母才满足条件 if (c3[i] == c4[i]) { if (i >= 0 && i <= 9) {//如果在0-9位则前面加个零 System.out.print("0" + i); } else {//否则直接输出即可 System.out.print(i); } } } } } }
写在最后 有疑问或者更好的建议欢迎留言!每天都会进行回复