學習目标:
目标:熟練運用 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