java算法基础--字符串匹配问题

[size=medium][b]问题描述:[/b][/size]给定一字符串strOriginal(全英文小写字母组成),并任意给一字符串strDesc,判断strDesc是否为strOriginal的任意排序,注意重复。 比如:给定字符串为adcbae,那么dacbea、cabeda都是匹配的,但是dacbe、cabedg不匹配

[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("匹配失败!");
}
}
}

你可能感兴趣的:(Java算法基础)