描述
ranko 的手表坏了,正常应该显示 xx:xx 的形式(4 个数字),比如下午 1 点半应该显示 13:30 ,但现在经常会有一些数字有概率无法显示。
ranko 在 t_1t1 时刻看了下时间,过了一段时间在 t_2t2 时刻看了下时间。她想知道, t_1t1 和 t_2t2 这两个时刻之间相距的时间的最大值和最小值是多少?
保证 t_1t1 在 t_2t2 之前(且 t_1t1 和 t_2t2 不等)。t_1t1和 t_2t2在同一天的 00:00 到 23:59 之间。
输入描述:
两行输入两个时间,为 xx:xx 的形式。其中 xx 为数字或者字符 '?' ,问号代表这个数字没有显示。
保证输入是合法的。
输出描述:
一行输出两个整数,分别代表 t_1t1 和 t_2t2 相距时间的最小值和最大值(单位分钟)。
示例1
输入:
18:0? 2?:1?
复制输出:
121 319
复制说明:
相距最小的时间为 18:09 到 20:10 ,相距121分钟。 相距最大的时间为 18:00 到 23:19 ,相距319分钟。
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
String s2=sc.nextLine();
System.out.println(min(s1,s2)+" "+max(s1,s2));
}
public static int max(String s1,String s2)
{
char[] c1=s1.toCharArray();
char[] c2=s2.toCharArray();
//分别装入map
Map<Integer,Integer> m=new HashMap<>();
Map<Integer,Integer> m2=new HashMap<>();
for (int i=0;i<c1.length;i++)
{
if (c1[i]>='0'&&c1[i]<='9')
{
m.put(i+1,Integer.parseInt(c1[i]+""));
}
}
//System.out.println("m:"+m.toString());
for (int i=0;i<c2.length;i++)
{
if (c2[i]>='0'&&c2[i]<='9')
{
m2.put(i+1,Integer.parseInt(c2[i]+""));
}
}
// System.out.println("m2:"+m2.toString());
//添加缺少的数
for (int i=1;i<=5;i++)
{
if (i!=3&&!m.containsKey(i))
{
m.put(i, 0);
}
}
if (!m2.containsKey(1))
{
m2.put(1,2);
}
if (!m2.containsKey(2))
{
if (m2.get(1)==2)
{
m2.put(2, 3);
}
else
{
m2.put(2, 9);
}
}
if (!m2.containsKey(4))
{
m2.put(4,5);
}
if (!m2.containsKey(5))
{
m2.put(5,9);
}
//System.out.println("m:"+m.toString());
//System.out.println("m2:"+m2.toString());
int number1=0,number2=0;
number1=60*(m.get(1)*10+m.get(2))+m.get(4)*10+m.get(5);
number2=60*(m2.get(1)*10+m2.get(2))+m2.get(4)*10+m2.get(5);
return number2-number1;
}
public static int min(String s1,String s2)
{
char[] c1=s1.toCharArray();
char[] c2=s2.toCharArray();
//分别装入map
Map<Integer,Integer> m=new HashMap<>();
Map<Integer,Integer> m2=new HashMap<>();
for (int i=0;i<c1.length;i++)
{
if (c1[i]>='0'&&c1[i]<='9')
{
m.put(i+1,Integer.parseInt(c1[i]+""));
}
}
//System.out.println("m:"+m.toString());
for (int i=0;i<c2.length;i++)
{
if (c2[i]>='0'&&c2[i]<='9')
{
m2.put(i+1,Integer.parseInt(c2[i]+""));
}
}
// System.out.println("m2:"+m2.toString());
//第一位
if (!m.containsKey(1)&&m2.containsKey(1))
{
if (m.containsKey(2)&&m2.containsKey(2)&&m.get(2)>=m2.get(2))
{
m.put(1, m2.get(1)-1);
}
else
{
m.put(1, m2.get(1));
}
}
if (!m2.containsKey(1)&&m.containsKey(1))
{
if (m.containsKey(2)&&m2.containsKey(2)&&m.get(2)>=m2.get(2))
{
m2.put(1, m.get(1)+1);
}
else
{
m2.put(1, m.get(1));
}
}
if (!m.containsKey(1)&&!m2.containsKey(1))
{
if (m.containsKey(2)&&m2.containsKey(2)&&m.get(2)>=m2.get(2))
{
m.put(1, 0);
m2.put(1, 1);
}
else
{
m.put(1,0);
m2.put(1, 0);
}
}
//第二位
if (!m.containsKey(2)&&m2.containsKey(2))
{
if (m.get(1)==m2.get(1)&&m.containsKey(4)&&m2.containsKey(4)&&m.get(4)>=m2.get(4))
{
m.put(2, m2.get(2)-1);
}
else if (m.get(1)==m2.get(1))
{
m.put(2, m2.get(2));
}
else
{
m.put(2, 9);
}
}
if (!m2.containsKey(2)&&m.containsKey(2))
{
if (m.get(1)==m2.get(1)&&m.containsKey(4)&&m2.containsKey(4)&&m.get(4)>=m2.get(4))
{
m2.put(2, m.get(2)+1);
}
else if (m.get(1)==m2.get(1))
{
m2.put(2, m.get(2));
}
else
{
m2.put(2, 0);
}
}
if (!m.containsKey(2)&&!m2.containsKey(2))
{
if (m.get(1)==m2.get(1)&&m.containsKey(4)&&m2.containsKey(4)&&m.get(4)>=m2.get(4))
{
m.put(2, 0);
m2.put(2, 1);
}
else if (m.get(1)==m2.get(1))
{
m.put(2, 0);
m2.put(2, 0);
}
else
{
m.put(2, 9);
m2.put(2, 0);
}
}
//第三位
if (!m.containsKey(4)&&m2.containsKey(4))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.containsKey(5)&&m2.containsKey(5)&&m.get(5)>=m2.get(5))
{
m.put(4, m2.get(4)-1);
} else if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2))
{
m.put(4, m2.get(4));
}
else
{
m.put(4, 5);
}
}
if (!m2.containsKey(4)&&m.containsKey(4))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.containsKey(5)&&m2.containsKey(5)&&m.get(5)>=m2.get(5))
{
m2.put(4, m.get(4)+1);
}
else if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2))
{
m2.put(4, m.get(4));
}
else
{
m2.put(4, 0);
}
}
if (!m.containsKey(4)&&!m2.containsKey(4))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.containsKey(5)&&m2.containsKey(5)&&m.get(5)>=m2.get(5))
{
m.put(4, 0);
m2.put(4, 1);
}
else if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2))
{
m.put(4, 0);
m2.put(4, 0);
}
else
{
m.put(4, 5);
m2.put(4, 0);
}
}
//第四位
if (!m.containsKey(5)&&m2.containsKey(5))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.get(4)==m2.get(4))
{
m.put(5, m2.get(5)-1);
}
else
{
m.put(5, 9);
}
}
if (!m2.containsKey(5)&&m.containsKey(5))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.get(4)==m2.get(4))
{
m2.put(5, m.get(5)+1);
}
else
{
m2.put(5, 0);
}
}
if (!m.containsKey(5)&&!m2.containsKey(5))
{
if (m.get(1)==m2.get(1)&&m.get(2)==m2.get(2)&&m.get(4)==m2.get(4))
{
m.put(5, 0);
m2.put(5, 1);
}
else
{
m.put(5, 9);
m2.put(5, 0);
}
}
//System.out.println("m:"+m.toString());
//System.out.println("m2:"+m2.toString());
int number1=0,number2=0;
number1=60*(m.get(1)*10+m.get(2))+m.get(4)*10+m.get(5);
number2=60*(m2.get(1)*10+m2.get(2))+m2.get(4)*10+m2.get(5);
return number2-number1;
}
}