給定乙個字串a和一短字串b,只包含小寫字母,判斷b中元素是否都在a中?
輪詢字串b中每個字元,逐一與a中字元比較。
時間複雜度:o(nm); 空間複雜度:o(1)c++**:
分別對字串a、b進行排序,排序後全部輪詢b結束後只需要遍歷字串a一次。bool stringcontain_1(string &a, string &b)
}if (j == a.length())
}return
true;
}
時間複雜度:排序分別為o(nlog(n)), o(nlog(n)), 所有比較過程o(m+n)c++**:
將字串a中所有不同的字母用不同的素數標記,計算a中所有不同字元對應素數的乘積prod;bool stringcontain_2(string &a, string &b)
if (i == a.length())
++j;
}return
true;
}
遍歷b中每個字元,字元對應素數能整除prod則表示該字元存在於a中;
時間複雜度:o(m+n)c++**:
侷限性:16個字母對應的素數相乘就超過long long型別的最大範圍,只能處理小字串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;
}
建立乙個標記字元是否存在於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;
}
提供乙個字串str,在乙個字典中找到它的兄弟字串。兄弟字串是指兩個字串包含的字元完全相同,但是順序不一樣。比如」bad」和」adb」為兄弟字串。#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()
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...