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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值