暴力算法
@searchTarget 要查找的子串
@searchFrom 查找出处
public ArrayList<Integer> search(String searchTarget, String searchFrom) {
//可能会有多个子串被查到,strPos记录子串的位置
ArrayList<Integer> strPos = new ArrayList<Integer>();
int targetLen = searchTarget.length();
int fromLen = searchFrom.length();
// 用j来遍历被查找的子串
int j = 0;
// 用i来遍历所有子串
for(int i = 0; i < fromLen - targetLen; i++) {
// 依次匹配,一个字符一个字符的匹配// 如果匹配成功,就返回i的值
for(j = 0; j < targetLen; j++) {
if (searchFrom.charAt(i+j) != searchTarget.charAt(j)) {
break;
}
}
//如果被查找的子串被遍历到了最后说明找到匹配目标
if (j == targetLen) {
strPos.add(i);
i=i+M
}
}
return strPos;
}
分享到:
相关推荐
2. Rabin-Karp算法:通过滚动哈希值快速查找子串。 3. Boyer-Moore算法:利用坏字符规则和好后缀规则提高匹配效率。 六、数据结构 1. 树:二叉树、平衡树(AVL树、红黑树)、堆(最大堆和最小堆)等。 2. 队列和栈...
这个名为“leetcode常用算法java代码”的压缩包文件很可能包含了使用Java语言实现的LeetCode上热门或基础算法问题的解法。让我们深入探讨一下这些常见算法及其在Java中的实现。 1. **排序算法**: - **冒泡排序**...
- KMP算法:在字符串中查找子串的高效算法,避免了不必要的回溯。 - Rabin-Karp滚动哈希:快速匹配字符串,通过哈希函数减少比较次数。 以上是Java中常见的一些算法实现,每个算法都有其特定的应用场景和优势。...
在Java面试中,LeetCode是一个经常被提及的平台,它提供了大量的编程题目,帮助开发者提升算法和编程技能。其中,第3题“无重复字符的最长子串”是一道非常经典的字符串处理问题,对于求职面试者来说,掌握这类问题...
- Rabin-Karp算法:通过哈希函数快速查找子串。 - Manacher's Algorithm:求解字符串中最长的回文子串。 7. 数学算法: - 大整数运算:如大整数乘法、模幂运算、中国剩余定理。 - 分治算法:如快速幂、矩阵快速...
"JAVA经典算法收集整理 以及Java算法大全(近100种算法打包)" 是一个宝贵的资源库,涵盖了各种基础到高级的算法,对于学习和提升Java编程能力具有极大的价值。 这个压缩包中的文件列表可能包括了各种算法的实现...
这个名为“Java经典算法源码实例”的资源集合提供了一系列用Java语言实现的常见算法,对于深入理解算法原理、提高编程技能以及优化代码性能具有极大的帮助。下面,我们将详细探讨这些算法及其应用。 1. **排序算法*...
Java经典算法是编程领域中的重要组成部分,对于提升编程能力、解决复杂问题以及优化代码效率具有至关重要的作用。这些算法不仅适用于Java语言,许多原理在其他编程语言中也通用。本资源包包含了一系列PPT,旨在帮助...
5. **字符串处理**:Java提供了丰富的字符串处理函数,练习题可能涉及字符串的比较、反转、子串查找等,帮助你掌握字符串操作的技巧。 6. **动态规划**:动态规划是解决复杂问题的有效策略,通过练习,你可以学会...
10. **字符串处理**:Java提供了丰富的字符串处理API,如模式匹配、字符串反转、子串查找等,这些都是算法中常见的问题。 以上是"JAVA算法应用"主题的一些核心知识点。熟练掌握这些,将有助于Java开发者编写出更加...
9. **字符串匹配算法**:KMP算法、Boyer-Moore算法等,用于查找字符串中的子串。 这个压缩包中的源代码可以帮助学习者深入理解这些数据结构和算法的实际实现,通过阅读和调试代码,可以提升编程能力和问题解决能力...
后缀数组可以高效地解决诸如查找所有子串、最长公共前后缀等问题,通常采用线性时间复杂度的构建算法,如Manber-Myers算法。 4. **配对堆** (PairingHeap.java): 配对堆是一种半链接半顺序的堆数据结构,它在合并和...
首先,Wu—Manber算法的核心思想是通过预处理阶段生成一个“前缀函数”(prefix function),这个函数存储了每个模式串中所有可能的前缀与子串的最长公共长度。在匹配过程中,一旦出现不匹配,算法会利用前缀函数...
这种算法的主要思想是创建一个动态更新的字典,字典中的条目是输入字符串中的已编码子串。 在Java环境中实现LZ78算法,首先我们需要理解其基本步骤: 1. 初始化:创建一个空的字典,通常用一个数组或哈希表表示,...
4. 对于每个子串长度,生成所有可能的子串,并在较长的字符串中查找是否匹配。 5. 如果找到一个匹配的子串,返回其长度,表示找到了最长公共子串。 6. 如果没有找到匹配的子串,返回0表示没有公共子串。 华为OJ平台...
6. **字符串处理**:Java提供了强大的字符串类,支持多种操作,如模式匹配、子串查找和替换。在处理文本问题时,字符串处理能力至关重要。 7. **复杂度分析**:理解时间复杂度和空间复杂度可以帮助优化代码,确保...
6. 字符串匹配算法:如KMP算法、Boyer-Moore算法,用于快速查找字符串中的子串。 7. 分治算法:将大问题分解为小问题,如快速排序和归并排序就是典型的分治策略。 8. 贪心算法:每次做出局部最优选择,以期达到...
Java算法大全是一份珍贵的学习资源,它包含了近100种常见的算法实现,用Java语言编写,对于希望提升自己在算法领域技能的开发者来说,这是一个不可多得的工具。这份资料可以帮助你深入理解各种算法的工作原理,提升...
Java常见算法大全是针对Java程序员的一份宝贵资源,旨在帮助他们深入理解和熟练运用各种算法,提升编程技能。在计算机科学中,算法是解决问题的关键,它是一系列清晰定义的步骤,用于执行特定任务或解决特定问题。...