日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【字符串】字符串查找 ( 蛮力算法 )

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【字符串】字符串查找 ( 蛮力算法 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、字符串查找
  • 二、蠻力算法代碼示例





一、字符串查找



算法題目鏈接 : https://www.lintcode.com/problem/13/

一個字符串 中查找 另外一個字符串 第一次出現的位置 ;

如 : 在 “abcdefghijk” 中查找 “def” 第一次出現的位置 , 是 444 ;


該方法使用 暴力算法 , 兩層 for 循環 , 肯定可以解決 ; 如果用暴力算法 , 那面試基本就涼了 ; 暴力算法的復雜度是 O(m×n)O(m \times n)O(m×n) , mmm 是第一個大字符串的長度 , nnn 是被查找的字符串長度 ;

KMP 算法 是專門用于解決該問題的算法 , 該算法 只能用于解決在一個字符串中查找另外一個字符串的問題 ; KMP 算法主要靠背誦 , 沒有涉及到算法的理論 , 只能用于解決單一字符串查找問題 , 一般面試時不考慮使用該算法 ; KMP 算法的算法復雜度是 O(m+n)O(m + n)O(m+n) ;

Rabin-Karp 算法 比 KMP 算法更簡單 , 其基本原理就是比較字符串的 哈希碼 ( HashCode ) , 快速的確定子字符串是否等于被查找的字符串 ;





二、蠻力算法代碼示例



蠻力算法 :

需要進行雙層循環遍歷 ;

外層循環 遍歷 source 字符串 , 遍歷 source.length() - target.length() 次 ,
假設被遍歷的索引 i 開始 , target.length() 位字符串 與 target 字符串是否相等 ,
如果相等 , 則該索引就是題目中想要的結果 ,
如果不相等 , 那么繼續遍歷下一個索引 ;

內層循環 就是遍歷 target 字符串 , 逐位對比 兩個字符串是否相等 ;


代碼 :

class Solution {/*** 蠻力算法 : 雙層循環, 外層循環循環 source, 內層循環循環 target 對應字符是否相等* @param source:在該字符串中查找子字符串* @param target:被查找的字符串* @return: return the index*/public int strStr(String source, String target) {if (target == null || "".equals(target)) {return 0;}for (int i = 0; i < source.length() - target.length() + 1; i++) {boolean notEqual = false;for (int j = 0; j < target.length(); j++) {if (source.charAt(i + j) != target.charAt(j)) {// 只要有一個字符不相等, 就說明遍歷的該子字符串不匹配notEqual = true;break;}}// 如果所有的字符都匹配, 即對比中沒有不相等的字符, 該 i 索引就是結果if (!notEqual) {return i;}}return -1;} }class Main {public static void main(String[] args) {int index = new Solution().strStr("mabcban", "cb");System.out.println(index);} }

總結

以上是生活随笔為你收集整理的【字符串】字符串查找 ( 蛮力算法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。