非商業,leetcode鏈結附上:
進入正題。
題目:
給定字串j 代表石頭中寶石的型別,和字串 s代表你擁有的石頭。 s 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。
j 中的字母不重複,j 和 s中的所有字元都是字母。字母區分大小寫,因此"a"和"a"是不同型別的石頭。
示例:
示例 1:
輸入: j = "aa", s = "aaabbbb"
輸出: 3
示例 2:
輸入: j = "z", s = "zz"
輸出: 0
注意:s 和 j 最多含有50個字母。
j 中的字元不重複。
**實現:
//暴力法public int numjewelsinstones(string j, string s) }}
return jewelscount;
}//時間複雜度o(mn),空間複雜度o(1)
//雜湊集合
public int numjewelsinstones(string j, string s)
for (int i = 0; i < stoneslength; i++)
}return jewelscount;
}
//時間複雜度o(m + n),其中m是字串j度長度,n是字串s的長度
//空間複雜度o(m)
分析:
之所以把這道題單獨拎出來,是在寫的時候感覺到了暴力方法的暴力美學,不摻雜多餘的技巧,也不需要太多的解釋。
有一點要注意的是chatat()方法的使用,之前偶爾會將字串轉化成字元陣列,這樣就在無形中增加了空間複雜度。
暴力方法基本都不會是最終最優的解法,在解演算法題或人生中也都逐漸的遠離暴力的解決問題的方式吧。
--end
Leetcode 771 寶石與石頭
給定字串j代表你現在擁有代表寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j和s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。def numjewelsinstones j,s i 0...
Leetcode 771 寶石與石頭
給定字串j代表石頭中寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j和s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3示例 2 輸...
LeetCode 771 寶石與石頭
給定字串j代表石頭中寶石的型別,和字串s代表你擁有的石頭。s中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。j中的字母不重複,j和s中的所有字元都是字母。字母區分大小寫,因此 a 和 a 是不同型別的石頭。示例 1 輸入 j aa s aaabbbb 輸出 3 示例 2 ...