有效单词。用go语言,要确定一个字符串是否为有效单词,需满足以下条件:
1.字符串至少包含3个字符。
2.字符串由数字0-9和英文字母(大小写)组成,不需要包含所有这些字符。
3.字符串中至少包含一个元音字母(a, e, i, o, u及其大写形式)。
4.字符串中至少包含一个辅音字母,即除元音字母外的其他字母。
给定一个字符串 word,如果满足上述条件,则返回true;否则返回false。
1 <= word.length <= 20。
word 由英文大写和小写字母、数字、'@'、'#' 和 '$' 组成。
输入:word = "234Adas"。
输出:true。
解释:
这个单词满足所有条件。
大体步骤如下:
1.函数isValid
接收一个字符串作为输入参数,用于判断该字符串是否满足有效单词的条件。
2.首先检查字符串的长度是否小于3,如果是,则直接返回false
。
3.初始化英文字母中的元音字母字符串变量vowels
为"aeiou",以及两个布尔变量flag1
和flag2
用于标记是否出现元音字母和辅音字母。
4.遍历输入的字符串word
中的每个字符,对每个字符执行以下操作:
- 检查字符是否为字母或数字,如果不是,则直接返回
false
表示不是有效单词。 - 如果字符是英文字母,则判断是否为元音字母,若是,则将
flag1
标记为true
;若不是则标记flag2
为true
。
5.最后,检查flag1
和flag2
是否都为true
,如果都为true
则返回true
表示是有效单词,否则返回false
。
6.在main
函数中,定义一个字符串word = "234Adas"
做为例子,调用isValid
函数并打印返回结果。
总体时间复杂度为O(n),其中n是输入字符串word
的长度。
空间复杂度为O(1),因为只使用了常量级别的额外空间(少量变量和常量字符串)。
Go完整代码如下:
package main
import (
"fmt"
"strings"
"unicode"
)
func isValid(word string) bool {
if len(word) < 3 {
return false
}
vowels := "aeiou"
flag1 := false
flag2 := false
for _, char := range word {
if !unicode.IsLetter(char) && !unicode.IsDigit(char) {
return false
}
if strings.ContainsRune(vowels, unicode.ToLower(char)) {
flag1 = true
} else if unicode.IsLetter(char) {
flag2 = true
}
}
return flag1 && flag2
}
func main() {
word := "234Adas"
fmt.Println(isValid(word))
}
Rust完整代码如下:
fn is_valid(word: &str) -> bool {
if word.len() < 3 {
return false;
}
let vowels = "aeiou";
let mut has_vowel = false;
let mut has_consonant = false;
for char in word.chars() {
if !char.is_alphanumeric() {
return false;
}
let lower_char = char.to_ascii_lowercase();
if vowels.contains(lower_char) {
has_vowel = true;
} else if lower_char.is_ascii_alphabetic() {
has_consonant = true;
}
}
has_vowel && has_consonant
}
fn main() {
let word = "234Adas";
println!("{}", is_valid(word));
}