PAT乙级算法-1014(JAVA实现)
注意事项:
解题思路-本题主要是对字符进行操作,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);
}
}
}
}
}
}
写在最后 有疑问或者更好的建议欢迎留言!每天都会进行回复