求子串在目標串中第一次出現的位置

2021-10-02 11:25:30 字數 690 閱讀 2990

題目:有乙個文字串s=「bacbababadababacambabacaddababacasdsd」,和乙個模式串p= 「bacaddabab」,現在要計算出p在s中第一次出現的位置

解題思路:有簡單模式匹配演算法(暴力匹配法)和kmp演算法,本文用簡單模式匹配法實現。

簡單模式匹配法有人稱為bf(brute-force)演算法。該方法的基本思想是:從主串s="s1 s2 …sn"的第pos(pos為匹配起始位置)個字元起逐個與模式串t="t1 t2 …tn"的字元進行比較,若對應字元相等,則繼續比較後續字元,否則從主串本趟起始位置的下乙個字元開始重新逐個與模式串的字元比較,依次類推。若在主串中找到乙個連續的字串行依次與模式串的每個字元相等,則匹配成功,函式返回模式串在主串中的位置,否則模式匹配失敗,函式返回-1;

**如下:

public

class

violentseek

i++; j++;}

else

}return-1

;}public

static

void

main

(string[

] args)

else

system.out.

println

("主串中不包含目標串!");

}}

求子串在母串中最後一次出現的位址

給定程式中函式fun的功能是 求出在字串中最後一次出現的子字串的位址,通過函式值返回,在主函式中輸出從此位址開始的字串 若未找到,則函式值為null。char fun char s,char t 其中 s 和 t 是使用者傳入的引數。函式求 t 指標所指的字串在s指標所指的字串中最後一次出現的位址,...

字串中第一次出現的字元

題目 在字串中查詢出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出b所在的下標。方法一 時間複雜度為o n n 遍歷字串中的每個字元,然後用該字元在字串中進行查詢,如果沒有找到和當前字元相同的字元。則當前字元為第乙個 只出現一次的字元。int firstnotrepeatingchar ...

第一次出現一次的字元

題目 在字串中找出第乙個出現一次的字元。如輸入 abaccdeff 則輸出 b 分析 最直觀的解法從頭掃瞄這個字串中的每乙個字元。當訪問到某個字元的時候拿這個字元和後面的字元相比較,如果在後面沒有發現重複的字元,那該字元就是只出現一次的字元。如果字串有n個字元,每乙個字元可能與後面的o n 個字元比...