LeetCode算法题-Jewels and Stones(Java实现)
這是悅樂書的第313次更新,第334篇原創
01 看題和準備
今天介紹的是LeetCode算法題中Easy級別的第182題(順位題號是771)。字符串J代表珠寶,S代表你擁有的石頭。S中的每個字符都是你擁有的一種石頭。計算S中有多少石頭也是珠寶。J中的字符不會重復出現,J和S中的所有字符都是英文字母。字母區分大小寫,因此“a”被認為是與“A”不同類型的石頭。例如:
輸入:J =“aA”,S =“aAAbbbb”
輸出:3
 輸入:J =“z”,S =“ZZ”
輸出:0
注意:
- S和J將由字母組成,長度最多為50。 
- J中的字符不會重復出現。 
本次解題使用的開發工具是eclipse,jdk使用的版本是1.8,環境是win7 64位系統,使用Java語言編寫和測試。
02 第一種解法
題目的意思是計算出J中的每個字符,在S中出現的次數之和。因為J中的字符不會有重復值,所以可以直接計算,不用擔心計算失真。因為是英文字母,所以可以直接使用整型數組,以S中每個字符代表的ASCII值來作為索引,出現次數為值,然后遍歷該數組,再以J的每個字符作為索引,累加對應的元素值即可。
public int numJewelsInStones(String J, String S) {int[] arr = new int[128];for (char ch : S.toCharArray()) {arr[ch]++; }int count = 0;for (char ch : J.toCharArray()) {count += arr[ch]; }return count; }03 第二種解法
也可以只使用一個循環來解決,借助字符串的indexOf方法,每次獲取S中的一個字符,來判斷是否存在于J中,存在就次數加1。
public int numJewelsInStones(String J, String S) {int count = 0;for (int i=0; i<S.length(); i++) {if (J.indexOf(S.charAt(i)) > -1) {count++;}}return count; }04 小結
算法專題目前已日更超過五個月,算法題文章182+篇,公眾號對話框回復【數據結構與算法】、【算法】、【數據結構】中的任一關鍵詞,獲取系列文章合集。
以上就是全部內容,如果大家有什么好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支持!
轉載于:https://www.cnblogs.com/xiaochuan94/p/10748210.html
總結
以上是生活随笔為你收集整理的LeetCode算法题-Jewels and Stones(Java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: c++ 不插入重复元素但也不排序_【每日
- 下一篇: python --- 二分查找算法
