`

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

0
0
分享到:
评论

相关推荐

    Boyer-Moore法实现字符串匹配(java)

    在字符串匹配问题中,Boyer-Moore算法是一种高效的解决方案。该算法使用坏字符移动表和好后缀移动表来实现字符串匹配。下面将详细解释Boyer-Moore算法的实现原理和java代码实现。 坏字符移动表 坏字符移动表是...

    KMP算法,全称Knuth-Morris-Pratt字符串搜索算法,是一种线性时间复杂度的字符串匹配算法

    KMP算法,全称Knuth-Morris-Pratt字符串搜索算法,是一种线性时间复杂度的字符串匹配算法。它的主要思想是在发生不匹配时,能知道部分已经匹配的字符序列的后缀和模式串的前缀存在重复,因此可以利用这些信息避免...

    Java实现字符串的匹配.doc

    本文介绍了如何使用 Java 实现字符串匹配,并且提供了基于素数乘积的算法实现。该算法的时间复杂度为 O(m+n),可以有效地实现字符串匹配操作。在实际应用中,可以根据需要选择合适的算法和数据结构来实现字符串匹配...

    Horspool字符串匹配输入增强技术

    在计算机科学中,字符串匹配是一个重要的算法问题,广泛应用于文本处理、搜索引擎、病毒扫描等领域。Horspool字符串匹配算法是一种高效的线性时间复杂度的字符串查找算法,由Brian W. Horspool在1980年提出。本实验...

    LZ78算法实现对任意字符串的压缩与解压

    它通过查找输入字符串中的最长匹配前缀来构建一个新的编码,从而实现数据的压缩。这种算法的主要思想是创建一个动态更新的字典,字典中的条目是输入字符串中的已编码子串。 在Java环境中实现LZ78算法,首先我们需要...

    模糊匹配算法java实现

    模糊匹配是指在两个字符串之间进行比较时,允许一定程度的不精确性,如字符差异、位置差异等。常见的模糊匹配算法有Levenshtein距离、Jaccard相似度、余弦相似度、 Soundex编码等。 1. **Levenshtein距离**:...

    KMP.rar_KMP_KMP算法_串 KMP算法_字符串匹配

    其中,字符串匹配是核心问题之一,而KMP(Knuth-Morris-Pratt)算法正是解决这一问题的有效工具。本文将深入解析KMP算法的原理、实现过程及其在实际应用中的价值。 KMP算法由Donald Knuth、Vaughan Pratt和James H....

    char_comp.rar_字符串匹配_字符串匹配comp

    在IT领域,字符串匹配是一项基础且重要的操作,广泛应用于各种软件和系统中,例如文本处理、搜索算法、数据解析等。这里的"char_comp.rar_字符串匹配_字符串匹配comp"主题聚焦于一个特定的字符串匹配方法,它强调了...

    串匹配问题 java源码

    在Java中,构建部分匹配表通常需要一个辅助函数,然后在主函数中进行字符串匹配。KMP算法的时间复杂度仍为O(n),但在实际应用中表现更优,因为它减少了不必要的字符比较。 在提供的压缩包文件"串匹配_2006690437"中...

    字符串匹配算法演示程序

    字符串匹配算法的演示程序,包括了平凡算法、KMP、RK、BM四种,有界面,统计展示移动和比较次数等信息。

    java_kmp_algorith.rar_字符串匹配

    Java KMP算法是一种高效的字符串匹配算法,主要用于在主串(目标字符串)中查找子串(模式字符串)的位置。它的全称是Knuth-Morris-Pratt算法,由D.M. Knuth、V. Morris和J.H. Pratt在1970年代提出。KMP算法避免了...

    我改进后的Wu-Manber经典多模式匹配算法(Java源码)

    标题中的“Wu-Manber经典多模式匹配算法”指的是计算机科学中的一种高效的字符串搜索算法,由Michael Wu和Neal Manber在1990年提出。这个算法主要用于在一个长文本中查找多个预定义的模式(关键词)。在描述中,提到...

    KMP算法是一种改进的字符串匹配算法.docx

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth、J.H.Morris和V.R.Pratt三位学者提出,因此也被称为克努特-莫里斯-普拉特操作(简称KMP算法)。以下是对KMP算法的详细介绍: 一、算法基础与目的 KMP算法是基于...

    java-string-similarity:一个Java库,实现了几种计算字符串之间相似度的算法

    ,用于计算两个字符串之间的归一化距离或相似度分数。 0.0 分表示两个字符串绝对不相似,1.0 表示绝对相似(或相等)。 介于两者之间的任何内容都表示两个字符串的相似程度。例子在这个简单的例子中,我们想要计算...

    Rabin-Karp字符串搜索算法介绍和java代码实现

    Rabin-Karp 字符串搜索算法是基于哈希的字符串匹配算法,用于在一个文本中查找一个模式字符串的出现。下面是该算法的概念、特点、优缺点、适用场景和 Java 代码实现。 概念:Rabin-Karp 字符串搜索算法是一种基于...

    Java检索字符串中是否存在某字符

    这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配算法,适用于在主字符串中查找目标子串是否存在。 KMP算法的核心在于构建一个“部分匹配表”(next function),它存储了目标子串的前缀...

    字符串匹配演示程序(平凡、KMP、BM、RK)

    字符串匹配是计算机科学中一个基础且重要的问题,广泛应用于文本处理、搜索引擎、数据挖掘等领域。本项目提供的"字符串匹配演示程序"涵盖了四种经典的算法:平凡算法、KMP算法、Boyer-Moore(BM)算法以及Rabin-Karp...

    算法与数据结构:字符串

    1. **朴素字符串匹配算法**:最简单的匹配方法,逐个字符比较,时间复杂度为O(mn),m为模式串长度,n为主串长度。 2. **KMP算法**:避免了不必要的比较,通过构造部分匹配表,提高效率,最坏情况下的时间复杂度仍为...

    kmp字符串查找算法

    KMP(Knuth-Morris-Pratt)字符串查找算法是一种在主串中高效地查找子串的算法,由Donald Knuth、Vaughan Pratt和James H. Morris三位学者于1970年代提出。该算法避免了在匹配过程中对已匹配部分的重复比较,从而...

Global site tag (gtag.js) - Google Analytics