[size=medium][b]问题描述:[/b][/size]给定一字符串strOriginal(全英文小写字母组成),并任意给一字符串strDesc,判断strDesc是否为strOriginal的任意排序,注意重复。 比如:给定字符串为adcbae,那么dacbea、cabeda都是匹配的,但是dacbe、cabedg不匹配
[size=medium][b]代码实现:[/b][/size]
[size=medium][b]代码实现:[/b][/size]
public class StringMatchTest
{
public static boolean testStr(String strOriginal,String strDesc)
{
if(strOriginal.equals("") || strDesc.equals(""))
return false;
if(strOriginal.equals(strDesc))
return true;
//先判断两个字符串长度是否相等
if(strOriginal.length() != strDesc.length())
{
return false;
}
//建立两个存放hash值的数组
int[] hashOriginal = new int[26];
int[] hashDesc = new int[26];
//建立两个字符串各自的hash表
for(int index = 0; index < strOriginal.length(); index++)
{
int indexOriginal,indexDesc;
indexOriginal = strOriginal.charAt(index) - 'a';
hashOriginal[indexOriginal] += 1;
indexDesc = strDesc.charAt(index) - 'a';
hashDesc[indexDesc] += 1;
}
return Arrays.equals(hashOriginal, hashDesc);
}
public static void main(String[] args)
{
String str1 = "";
String str2 = "";
if(testStr(str1, str2))
{
System.out.println("匹配成功!");
}else {
System.out.println("匹配失败!");
}
}
}