字串的包含

2021-07-09 03:39:21 字數 2641 閱讀 5143

給定乙個字串a和一短字串b,只包含小寫字母,判斷b中元素是否都在a中?

輪詢字串b中每個字元,逐一與a中字元比較。

時間複雜度:o(nm); 空間複雜度:o(1)

c++**:

bool stringcontain_1(string &a, string &b)

}if (j == a.length())

}return

true;

}

分別對字串a、b進行排序,排序後全部輪詢b結束後只需要遍歷字串a一次。

時間複雜度:排序分別為o(nlog(n)), o(nlog(n)), 所有比較過程o(m+n)

c++**:

bool stringcontain_2(string &a, string &b)

if (i == a.length())

++j;

}return

true;

}

將字串a中所有不同的字母用不同的素數標記,計算a中所有不同字元對應素數的乘積prod;

遍歷b中每個字元,字元對應素數能整除prod則表示該字元存在於a中;

時間複雜度:o(m+n)

c++**:

bool stringcontain_3(string &a, string &b)

; long

long prod = 1;

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

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

}return

true;

}

侷限性:16個字母對應的素數相乘就超過long long型別的最大範圍,只能處理小字串

建立乙個標記字元是否存在於a中的雜湊表,輪詢b字串,在o(1)時間內判斷字元是否存在

時間複雜度:o(m+n); 空間複雜度o(1)

c++**:

bool stringcontain_4(string &a, string &b)

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

}return

true;

}

#include 

#include

#include

#include

using

namespace

std;

bool stringcontain_1(string &a, string &b)

}if (j == a.length())

}return

true;

}bool stringcontain_2(string &a, string &b)

if (i == a.length())

++j;

}return

true;

}bool stringcontain_3(string &a, string &b)

; long

long prod = 1;

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

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

}return

true;

}bool stringcontain_4(string &a, string &b)

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

}return

true;

}int main()

提供乙個字串str,在乙個字典中找到它的兄弟字串。兄弟字串是指兩個字串包含的字元完全相同,但是順序不一樣。比如」bad」和」adb」為兄弟字串。

c++**:

#include 

#include

#include

#include

#include

using

namespace

std;

vector

siblingstring(vector

&dict, string str)

sort(str.begin(), str.end()); // sort the string

return mp[str]; // return the sibling strings

}int main()

; string str = "cab";

vector

siblings = siblingstring(dict, str);

for (int i = 0; i < siblings.size(); ++i)

return

0;}

字串包含

問題 給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string...

字串包含

給定乙個長字串a和乙個短字串b,請問,如何最快地判斷出短字串b中的所有字元是否都在長字串a中?輪詢短字串b中的每乙個字元,逐個與長字串a中的每個字元比較,看是否都在字串a中。實現 public class stringcontain return true public static void ma...

字串包含

題目描述 給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string 1 abcd string 2 bad 答案是t...