题目:给一个24小时制的时间(00:00-23:59),其中有一个或多个数字是问号。问号处可以用任何一个数字代替,问可以表示的最大时间是多少。
样例1:
输入:
time = “2?:00”
输出:
“23:00”
样例2:
输入:
time = “??:??”
输出:
“23:59”
思路:
生成一个StringBuilder字符串便于操作
将输入的时间与字符 '?‘进行比较,不是’?'的则直接赋值进入StringBuilder。
小时的十位数是 '?‘的时候,则考虑个位数的情况,<4和?时十位数可设置为2,否则设置为1;
小时的个位数是’?'时,考虑十位数的情况,此处考察StringBuilder的情况更方便,是2的话就设置为3,否则就设置为9
分钟的十位数和个位数只要是?就直接赋值5或9。
将StringBuilder转化回String类型返回。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Daytwo {
/**
* @param time: a string of Time
* @return: The MaximumMoment
* @throws IOException
*/
public static void main(String[] args) throws IOException{
Daytwo so=new Daytwo();
BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
String str=bu.readLine();
System.out.println(so.MaximumMoment(str));
}
public String MaximumMoment(String time) {
// Write your code here.
char just;
StringBuilder sb=new StringBuilder();
for(int i=0;i<time.length();i++)
{
just=time.charAt(i);
if(just!='?') {
sb.append(just);
}else {
switch(i)
{
case 1:if(time.charAt(i+1)>'4') {
sb.append(2);
}else{
sb.append(1);
}break;
case 2:if(sb.charAt(i-1)=='2') {
sb.append(3);
}else{
sb.append(9);
}break;
case 4:sb.append(5);break;
case 5:sb.append(9);break;
}
}
}
return sb.toString();
}
}
运行结果