import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args){
Scanner cin=new Scanner(System.in);
String[] s=cin.next().split("/");
int s1=Integer.parseInt(s[0]);
int s2=Integer.parseInt(s[1]);
int s3=Integer.parseInt(s[2]);
TreeSet<String> ls=new TreeSet<>();
int t=0;
//年月日
if(s1>=0&&s1<=59)
{
t=2000+s1;
}
else
{
t=1900+s1;
}
if(LegalDate(s1,s2,s3))
{
ls.add(t+"-"+s[1]+"-"+s[2]);
}
//月日年
if(s3>=0&&s3<=59)
{
t=2000+s3;
}
else
{
t=1900+s3;
}
if(LegalDate(s3,s1,s2))
{
ls.add(t+"-"+s[0]+"-"+s[1]);
}
//日月年
if(s3>=0&&s3<59)
{
t=2000+s3;
}
else
{
t=1900+s3;
}
if(LegalDate(s3,s2,s1))
{
ls.add(t+"-"+s[1]+"-"+s[0]);
}
for(String ss:ls)
{
System.out.println(ss);
}
}
static boolean LeapYear(int year)
{
return year%400==0||year%100!=0&&year%4==0;
}
static boolean LegalDate(int y,int m,int d)
{
int[]days={
0,31,28,31,30,31,30,31,31,30,31,30,31};
if(LeapYear(y))
{
days[2]++;
}
if(m<1||m>12)
{
return false;
}
if(d<1||d>days[m])
{
return false;
}
return true;
}
}
注意
1、字符串分割用split()方法时,返回的是字符串数组,因此要用字符串数组来接。
2、TreeSet默认按编码顺序进行排序,可以通过创建类,实现Comparator<数据类型>接口,重写compare()方法实现自定义排序方法。
3、代码过于繁琐的话,可以分步实现函数使主函数变简洁来促进对题目的理解。