问题描述:给定一字符串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("匹配失败!");
}
}
}
分享到:
相关推荐
在字符串匹配问题中,Boyer-Moore算法是一种高效的解决方案。该算法使用坏字符移动表和好后缀移动表来实现字符串匹配。下面将详细解释Boyer-Moore算法的实现原理和java代码实现。 坏字符移动表 坏字符移动表是...
KMP算法,全称Knuth-Morris-Pratt字符串搜索算法,是一种线性时间复杂度的字符串匹配算法。它的主要思想是在发生不匹配时,能知道部分已经匹配的字符序列的后缀和模式串的前缀存在重复,因此可以利用这些信息避免...
本文介绍了如何使用 Java 实现字符串匹配,并且提供了基于素数乘积的算法实现。该算法的时间复杂度为 O(m+n),可以有效地实现字符串匹配操作。在实际应用中,可以根据需要选择合适的算法和数据结构来实现字符串匹配...
在计算机科学中,字符串匹配是一个重要的算法问题,广泛应用于文本处理、搜索引擎、病毒扫描等领域。Horspool字符串匹配算法是一种高效的线性时间复杂度的字符串查找算法,由Brian W. Horspool在1980年提出。本实验...
它通过查找输入字符串中的最长匹配前缀来构建一个新的编码,从而实现数据的压缩。这种算法的主要思想是创建一个动态更新的字典,字典中的条目是输入字符串中的已编码子串。 在Java环境中实现LZ78算法,首先我们需要...
模糊匹配是指在两个字符串之间进行比较时,允许一定程度的不精确性,如字符差异、位置差异等。常见的模糊匹配算法有Levenshtein距离、Jaccard相似度、余弦相似度、 Soundex编码等。 1. **Levenshtein距离**:...
其中,字符串匹配是核心问题之一,而KMP(Knuth-Morris-Pratt)算法正是解决这一问题的有效工具。本文将深入解析KMP算法的原理、实现过程及其在实际应用中的价值。 KMP算法由Donald Knuth、Vaughan Pratt和James H....
在IT领域,字符串匹配是一项基础且重要的操作,广泛应用于各种软件和系统中,例如文本处理、搜索算法、数据解析等。这里的"char_comp.rar_字符串匹配_字符串匹配comp"主题聚焦于一个特定的字符串匹配方法,它强调了...
在Java中,构建部分匹配表通常需要一个辅助函数,然后在主函数中进行字符串匹配。KMP算法的时间复杂度仍为O(n),但在实际应用中表现更优,因为它减少了不必要的字符比较。 在提供的压缩包文件"串匹配_2006690437"中...
字符串匹配算法的演示程序,包括了平凡算法、KMP、RK、BM四种,有界面,统计展示移动和比较次数等信息。
Java KMP算法是一种高效的字符串匹配算法,主要用于在主串(目标字符串)中查找子串(模式字符串)的位置。它的全称是Knuth-Morris-Pratt算法,由D.M. Knuth、V. Morris和J.H. Pratt在1970年代提出。KMP算法避免了...
标题中的“Wu-Manber经典多模式匹配算法”指的是计算机科学中的一种高效的字符串搜索算法,由Michael Wu和Neal Manber在1990年提出。这个算法主要用于在一个长文本中查找多个预定义的模式(关键词)。在描述中,提到...
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth、J.H.Morris和V.R.Pratt三位学者提出,因此也被称为克努特-莫里斯-普拉特操作(简称KMP算法)。以下是对KMP算法的详细介绍: 一、算法基础与目的 KMP算法是基于...
,用于计算两个字符串之间的归一化距离或相似度分数。 0.0 分表示两个字符串绝对不相似,1.0 表示绝对相似(或相等)。 介于两者之间的任何内容都表示两个字符串的相似程度。例子在这个简单的例子中,我们想要计算...
Rabin-Karp 字符串搜索算法是基于哈希的字符串匹配算法,用于在一个文本中查找一个模式字符串的出现。下面是该算法的概念、特点、优缺点、适用场景和 Java 代码实现。 概念:Rabin-Karp 字符串搜索算法是一种基于...
这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配算法,适用于在主字符串中查找目标子串是否存在。 KMP算法的核心在于构建一个“部分匹配表”(next function),它存储了目标子串的前缀...
字符串匹配是计算机科学中一个基础且重要的问题,广泛应用于文本处理、搜索引擎、数据挖掘等领域。本项目提供的"字符串匹配演示程序"涵盖了四种经典的算法:平凡算法、KMP算法、Boyer-Moore(BM)算法以及Rabin-Karp...
1. **朴素字符串匹配算法**:最简单的匹配方法,逐个字符比较,时间复杂度为O(mn),m为模式串长度,n为主串长度。 2. **KMP算法**:避免了不必要的比较,通过构造部分匹配表,提高效率,最坏情况下的时间复杂度仍为...
KMP(Knuth-Morris-Pratt)字符串查找算法是一种在主串中高效地查找子串的算法,由Donald Knuth、Vaughan Pratt和James H. Morris三位学者于1970年代提出。该算法避免了在匹配过程中对已匹配部分的重复比较,从而...