题目描述:
福尔摩斯从X星收到一份资料,全部是小写字母组成。
他的助手提供了另一份资料:许多长度为8的密码列表。
福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。
请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。
代码:
package lanqiao;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Set<String> set = new HashSet<String>();
String s = sc.next();
int n = sc.nextInt();
char[] d,t;
sc.nextLine();
for(int i = 0;i < n;i ++)
{
String ch = sc.next();
d = ch.toCharArray();
Arrays.sort(d);
for(int j = 0;j <= s.length() - 8;j ++)
{
String temp = s.substring(j,j + 8);
t = temp.toCharArray();
Arrays.sort(t);
int flag = 0;
for(int x = 0;x < 8;x ++)
{
if(d[x] != t[x])
{
flag = 1;
}
}
if(flag == 0)
{
set.add(temp);
}
}
}
System.out.println(set.size());
}
}