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

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

代码实现:
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,算法)