zoukankan      html  css  js  c++  java
  • 乙级PAT真题之福尔摩斯的约会(字符串的基本输入)

    题目描述
    大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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 输出例子: THU 14:04

     题意:输入的四个字符串,前两个字符串是为了判断星期和小时(也就是前面两个字符串的两对字符相同),后面两对字符串就是判断分钟。

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
        public static void main(String []args) throws IOException  {
        	BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));///字符流
        	String[] s= new String[4];
        	for(int i=0;i<4;i++) {
        		s[i]=buffer.readLine();///会抛出错误。读取一行数据
        	}
        	
        	String str = "";///初始化
        	for(int i=0,flag=0;i<Math.min(s[0].length(), s[1].length());i++) {///前两对字符串,选出最短的一串
        		char zero = s[0].charAt(i);
        		char one = s[1].charAt(i);
        		if(flag==1&&zero==one) {///先判断时针就可以防止冲突
        			if(zero>='0'&&zero<='9') {
        				str = str+"0"+zero+":";
        				break;
        			}
        			else if(zero>='A'&&zero<='Z') {
        				int num = zero-'A'+10;
        				str = str+Integer.toString(num)+":";///执行将int转换为String的操作
        				break;
        			}
        		}
        		if(zero>='A'&&zero<='Z'&&one>='A'&&one<='Z') {
        			if(zero==one) {
        				flag=1;
        					switch((zero-'A'+1)%7) {
        					case 0:
        						str+="SUN ";
        						break;
        				    case 1:
    						    str+="MON ";
    						    break;
        				    case 2:
        						str+="TUE ";
        						break;
        				    case 3:
        						str+="WED ";
        						break;
        				    case 4:
        						str+="THU ";
        						break;
        				    case 5:
        						str+="FRI ";
        						break;
        				    case 6:
        						str+="SAT ";
        						break;
    					   }
        		   }
        		}
        }
        	
       for(int i=0;i<Math.min(s[2].length(), s[3].length());i++) {
    	   char two = s[2].charAt(i);
    	   char three = s[3].charAt(i);
    	   if(two>='A'&&two<='Z'&&three>='A'&&three<='Z'||two>='a'&&two<='z'&&three>='a'&&three<='z') {
    		    if(two==three) {
    		    	i=i>60?i%60:i;
    		    	if(i<10) {
    		    		str=str+"0"+Integer.toString(i);
    		    		break;
    		    	}
    		    	else {
    		    		str=str+Integer.toString(i);
    		    		break;
    		    	}
    		    }
    	   }
       }
       System.out.println(str);
      }
    }
    

      

    不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
  • 相关阅读:
    &与&&的区别
    x^y=(x&~y)|(~x&y)证明
    a、b交换与比较
    x+y = ((x&y)<<1) + (x^y) 证明
    (x&y) + ((x^y)>>1)即x和y的算数平均值
    默认参数提升
    类型转换
    闲扯原码,补码和反码(转)
    C/C++中float和double的存储结构
    led设备驱动(s3c_led.c)
  • 原文地址:https://www.cnblogs.com/wszhu/p/12250445.html
Copyright © 2011-2022 走看看