2023-06-02每日一題
一、題目編號(hào)
2559. 統(tǒng)計(jì)范圍內(nèi)的元音字符串?dāng)?shù)
二、題目鏈接
點(diǎn)擊跳轉(zhuǎn)到題目位置
三、題目描述
給你一個(gè)下標(biāo)從 0 開始的字符串?dāng)?shù)組 words 以及一個(gè)二維整數(shù)數(shù)組 queries 。
每個(gè)查詢 queries[i] = [li, ri] 會(huì)要求我們統(tǒng)計(jì)在 words 中下標(biāo)在 li 到 ri 范圍內(nèi)(包含 這兩個(gè)值)并且以元音開頭和結(jié)尾的字符串的數(shù)目。
返回一個(gè)整數(shù)數(shù)組,其中數(shù)組的第 i 個(gè)元素對(duì)應(yīng)第 i 個(gè)查詢的答案。
注意:元音字母是 ‘a(chǎn)’、‘e’、‘i’、‘o’ 和 ‘u’ 。
提示:
- 1 <= words.length <= 105
- 1 <= words[i].length <= 40
- words[i] 僅由小寫英文字母組成
- sum(words[i].length) <= 3 * 105
- 1 <= queries.length <= 105
- 0 <= queries[j][0] <= queries[j][1] < words.length
四、解題代碼
class Solution {
bool judge(char ch){
if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){
return true;
}
return false;
}
bool judge_string(string s){
if(judge(s[0]) == true && judge(s[s.size() - 1]) == true){
return true;
}
return false;
}
public:
vector<int> vowelStrings(vector<string>& words, vector<vector<int>>& queries) {
vector<int> res;
int n = words.size();
int perifix_sum[n+1];
for(int i = 1; i <= n; ++i){
if(judge_string(words[i-1]) == true){
perifix_sum[i] = perifix_sum[i-1] + 1;
} else{
perifix_sum[i] = perifix_sum[i-1];
}
}
int m = queries.size();
for(int i = 0; i < m; ++i){
int x = queries[i][0];
int y = queries[i][1];
res.push_back(perifix_sum[y+1] - perifix_sum[x]);
}
return res;
}
};
五、解題思路
(1) 采用前綴和來(lái)幫助統(tǒng)計(jì)l ~ r區(qū)間內(nèi)所有符合要求的字符串的個(gè)數(shù)。
(2) 寫一個(gè)函數(shù),用來(lái)判斷該字符是否是元音字符。
(3) 寫一個(gè)函數(shù),用來(lái)判斷該字符串是否滿足首尾都是元音字符。這需要調(diào)用 (2) 中所說(shuō)的函數(shù)
(4) 0 ~ x 區(qū)間內(nèi)的符合要求的字符串?dāng)?shù)量記作perifix_sum[x + 1],那么l ~ r 區(qū)間內(nèi)為 perifix_sum[r+1] -
perifix_sum[l]。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-468162.html
(5) 遍歷查詢結(jié)果,填入答案即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-468162.html
到了這里,關(guān)于2023-06-02 LeetCode每日一題(統(tǒng)計(jì)范圍內(nèi)的元音字符串?dāng)?shù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!