判斷兩個字串是否為包含關係

2021-08-08 17:59:38 字數 1189 閱讀 4776

題目描述:

假設這有乙個各種字母組成的字串a,和另外乙個字串b,字串裡b的字母數相對少一些。什麼方法能最快的查出所有小字串b裡的字母在大字串a裡都有?

比如,如果是下面兩個字串:

string 1: abcdefghlmnopqrs

string 2: dcgsrqpo

答案是true,所有在string2裡的字母string1也都有。

思路總結如下:

1.定義最小的26個素數分別與字元'a'到'z'對應。

2.遍歷長字串,求得每個字元對應素數的乘積。

3.遍歷短字串,判斷乘積能否被短字串中的字元對應的素數整除。

4.輸出結果。

至此,如上所述,上述演算法的時間複雜度為o(m+n),時間複雜度最好的情況為o(n)(

遍歷短的字串的第乙個數,與長字串素數的乘積相除,即出現餘數,便可退出程式,返回false

),n為長字串的長度,空間複雜度為o(1)。如你所見,我們已經優化到了最好的程度。

**:

public static void function()  

;

string strone = "abcdefghlmnopqrs";

string strtwo = "dcgsrqpom";

long long product = 1; //大整數除法的**,下頭給出。

// 遍歷長字串,得到每個字元對應素數的乘積

for (int i = 0; i < strone.length(); i++)

// 遍歷短字串

for (int j = 0; j < strtwo.length(); j++)

// 如果積能整除短字串中所有字元則輸出"true",否則輸出"false"。

判斷兩個字串是否為變形詞

例如 str1 123 str2 132 true str1 123 str2 1332 false 思路 1.如果其中乙個字串為空或者兩個字串長度不相等,返回 false 2.遍歷 str1,記錄每個字元出現的次數 1.建立乙個新的陣列 arr 初始化都為 0 2.遍歷 str1,利用字元的 as...

判斷兩個字串是否為變形詞

判斷兩個字串是否為變形詞 給定兩個字串str1和str2,如果str1和str2 現的字元種類出現的一樣且每種字元出現的次數也一樣,那麼str1和str2互為變形詞。請判斷str1和str2是否為變形詞。輸入描述 輸入包括3行,第一行包含兩個整數n,m 1 n,m 105 1 leq n,m leq...

判斷兩個字串是否相同

data segment mess1 db computer software mess2 db computer software data ends code segment assume ds data,cs code start mov ax,data mov ds,ax mov es,ax...