这道题目有很多做法,可以枚举也可以自己写个匹配函数。
前段时间看到首尾相接的字符串匹配的黑科技。就是将两个作为标准的字符串首尾相接,然后再去匹配。
(如:12345的子序列有34512,。。。 可以将两个12345首位拼接,得1234512345 再去匹配)
这道题目也可以转化成上面的来做。不过要注意题目输入有两位数三位数,要在他们之间加‘*’来区分。
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int n;
n=cin.nextInt();
int[] a =new int[5];
for(int i=1;i<=n;i++){
for(int j=0;j<4;j++){
a[j]=cin.nextInt();
}
String s1=String.valueOf(a[0]);
s1+='*';
s1+=String.valueOf(a[1]);
s1+='*';
s1+=String.valueOf(a[3]);
s1+='*';
s1+=String.valueOf(a[2]);
s1+='*';
String s3=s1+s1;
//System.out.println(num);
for(int j=0;j<4;j++){
a[j]=cin.nextInt();
}
String s2=String.valueOf(a[0]);
s2+='*';
s2+=String.valueOf(a[1]);
s2+='*';
s2+=String.valueOf(a[3]);
s2+='*';
s2+=String.valueOf(a[2]);
s2+='*';
//System.out.println(num);
if(s3.contains(s2))
{
System.out.println("Case #"+i+": POSSIBLE");
}
else
{
System.out.println("Case #"+i+": IMPOSSIBLE");
}
//System.out.println(s1+" "+s2+" "+s3);
}
cin.close();
}
}