列表

详情


1704. 判断字符串的两半是否相似

给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b

两个字符串 相似 的前提是它们都含有相同数目的元音('a''e''i''o''u''A''E''I''O''U')。注意,s 可能同时含有大写和小写字母。

如果 a b 相似,返回 true ;否则,返回 false

 

示例 1:

输入:s = "book"
输出:true
解释:a = "bo" 且 b = "ok" 。a 中有 1 个元音,b 也有 1 个元音。所以,a 和 b 相似。

示例 2:

输入:s = "textbook"
输出:false
解释:a = "text" 且 b = "book" 。a 中有 1 个元音,b 中有 2 个元音。因此,a 和 b 不相似。
注意,元音 o 在 b 中出现两次,记为 2 个。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool halvesAreAlike(string s) { } };

golang 解法, 执行用时: 4 ms, 内存消耗: 2.2 MB, 提交时间: 2021-05-27 15:42:02

func halvesAreAlike(s string) bool {
    n := len(s)
    t := map[byte]int{'a': 1, 'e': 1, 'i': 1, 'o': 1, 'u' : 1, 'A': 1, 'E': 1, 'I': 1, 'O': 1, 'U': 1}
    a, b := 0, 0
    for i := 0; i < n / 2; i++ {
        if _, ok := t[s[i]]; ok {
            a++
        }
        if _, ok := t[s[n/2 +i]]; ok {
            b++
        }
    }
    return a == b
}

上一题