[Easy] 解法 : Traversal
題意 :
給定一個字串,判斷其是否合法。合法的條件如下,全部皆需要滿足
- 最少需要 3 個字元
- 字串中只能含有英文字母與數字
- 字串中至少要有一個母音 (vowel)
- 字串中至少要有一個子音 (consonant)
解題思路 :
用一個 set 去紀錄母音,並透過迴圈逐一走訪每個字元,其中如果字元是特殊字元就直接回傳 false。並透過 "contains" 函式去判斷字元是否屬於母音。
class Solution {
public:
bool isValid(string word) {
if(word.size() < 3)
return false;
bool has_vowel = false, has_consonant = false;
set<char> vowel{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
for(auto &c : word){
if(!isalpha(c) && !isdigit(c))
return false;
has_vowel = (has_vowel || vowel.contains(c));
has_consonant = (has_consonant || (!vowel.contains(c) && !isdigit(c)));
}
return (has_vowel && has_consonant);
}
};
Extra :
這題其實也可以直接以正規表達式下去解,連結附上參考
Regular Expressions || NO REGEX || INPUT VALIDATION FULL EXPLANATION || Beats 100%