如何实现“java 字符串所有包含的子串”
作为一名经验丰富的开发者,我将向你介绍如何实现在Java中获取字符串所有包含的子串的方法。在本文中,我将使用以下步骤展示整个过程。
步骤概览
以下是实现该功能的步骤概览:
journey
理解需求 --> 找到所有子串的起始位置 --> 获取所有子串
下面,我将详细解释每个步骤以及相关代码。
步骤一:理解需求
在开始编写代码之前,我们首先需要明确任务需求。我们要获取给定字符串中所有包含的子串。
步骤二:找到所有子串的起始位置
我们需要找到给定字符串中所有子串的起始位置。可以使用两层循环来遍历字符串,并检查每个可能的子串是否在原字符串中出现。
下面是一段Java代码,用于找到所有子串的起始位置:
public static List<Integer> findSubstringIndices(String str, String subStr) {
List<Integer> indices = new ArrayList<>();
int strLength = str.length();
int subStrLength = subStr.length();
for (int i = 0; i <= strLength - subStrLength; i++) {
int j;
for (j = 0; j < subStrLength; j++) {
if (str.charAt(i + j) != subStr.charAt(j)) {
break;
}
}
if (j == subStrLength) {
indices.add(i);
}
}
return indices;
}
在上面的代码中,我们首先创建了一个空列表indices
来存储子串的起始位置。然后,我们使用两个循环来遍历字符串,并检查每个可能的子串是否与给定的子串相同。如果子串相同,则将起始位置(i的值)添加到列表indices
中。
步骤三:获取所有子串
现在我们已经找到了所有子串的起始位置,接下来我们需要根据这些起始位置获取所有子串。
下面是一段Java代码,用于获取所有子串:
public static List<String> getAllSubstrings(String str) {
List<String> substrings = new ArrayList<>();
int strLength = str.length();
for (int i = 0; i < strLength; i++) {
for (int j = i + 1; j <= strLength; j++) {
substrings.add(str.substring(i, j));
}
}
return substrings;
}
在上面的代码中,我们首先创建了一个空列表substrings
来存储所有子串。然后,我们使用两个循环来获取从起始位置到当前位置的子串,并将其添加到列表substrings
中。
完整代码和使用示例
下面是完整的代码示例,包括上述两个方法:
import java.util.ArrayList;
import java.util.List;
public class SubstringExample {
public static List<Integer> findSubstringIndices(String str, String subStr) {
List<Integer> indices = new ArrayList<>();
int strLength = str.length();
int subStrLength = subStr.length();
for (int i = 0; i <= strLength - subStrLength; i++) {
int j;
for (j = 0; j < subStrLength; j++) {
if (str.charAt(i + j) != subStr.charAt(j)) {
break;
}
}
if (j == subStrLength) {
indices.add(i);
}
}
return indices;
}
public static List<String> getAllSubstrings(String str) {
List<String> substrings = new ArrayList<>();
int strLength = str.length();
for (int i = 0; i < strLength; i++) {
for (int j = i + 1; j <= strLength; j++) {
substrings.add(str.substring(i, j));
}
}
return substrings;
}
public static void main(String[] args) {
String str = "Hello World";
String subStr = "l";
List<Integer> indices = findSubstringIndices(str, subStr);
System.out.println("Indices of substring '" + subStr + "': " + indices);
List<String> substrings = getAllSubstrings(str);
System.out.println("All substrings: " + substrings);
}
}
``