天天看點

【Java練習】實作方法 indexOf, 能夠找出字元串子串存在的位置學習目标:題目内容:解題思路:實作代碼:

學習目标:

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