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