学习目标:
目标:熟练运用 Java所学知识
题目内容:
本文内容: 使用Java实现:实现方法 indexOf, 能够找出字符串子串存在的位置
解题思路:
要查找的字符串子串记作s,原字符串记作str
有两种方法
首先找到s第一个元素在str中出现的位置,记作 i;
方法一:使用substring()方法截取从 i 到i+s.length()(要查询字符串的长度),然后判断截取出来的字符串是否与s相等,如果相等则返回 i;
方法二:从i位置开始for循环遍历,遍历长度为s的长度,判断str每一个字符是否与s中的每一个字符相等,每个都相等则返回位置 i
方法一截取字符串需要创建新的字符串,比较浪费内存空间
实现代码:
- 方法一:
public class Practice_03 {
public static void main(String[] args) {
//实现方法 indexOf, 能够找出字符串子串存在的位置
String str="Hello world";
System.out.println( indexOf(str,"wor"));
}
public static int indexOf(String str, String s) {
for (int i = 0; i < str.length(); i++) {
int count = 0;
if ((String.valueOf(s.charAt(0))).equals(String.valueOf(str.charAt(i)))) {
//找到s中第一个元素在str中出现的位置
String str1=new String(str.substring(i,(i+s.length())));
if(str1.equals(s)){
return i;
}
}
}
return -1;
}
}
//运行结果
6
- 方法二:
public class Practice_03 {
public static void main(String[] args) {
//实现方法 indexOf, 能够找出字符串子串存在的位置
String str = "Hello world";
System.out.println(indexOf(str, "wor"));
}
public static int indexOf(String str, String s) {
for (int i = 0; i < str.length(); i++) {
int count = 0;
if ((String.valueOf(s.charAt(0))).equals(String.valueOf(str.charAt(i)))) {
//找到s中第一个元素在str中出现的位置
int m = i;
for (int j = 0; j < s.length(); j++) {
if ((String.valueOf(s.charAt(j))).equals(String.valueOf(str.charAt(m++)))) {
//判断i位置开始后,长度为s的每一个字符是否与s中的每一个字符相等
count++;
}
if (count == s.length()) {
return m - s.length();
}
}
}
}
return -1;
}
}
//运行结果
6