【leetcode】1704. Determine if String Halves Are Alike
题目如下:
You are given a string
s
of even length. Split this string into two halves of equal lengths, and leta
be the first half andb
be the second half.Two strings are alike if they have the same number of vowels (
'a'
,'e'
,'i'
,'o'
,'u'
,'A'
,'E'
,'I'
,'O'
,'U'
). Notice thats
contains uppercase and lowercase letters.Return
true
ifa
andb
are alike. Otherwise, returnfalse
.Example 1:
Input: s = "book" Output: true Explanation: a = "bo" and b = "ok". a has 1 vowel and b has 1 vowel. Therefore, they are alike.Example 2:
Input: s = "textbook" Output: false Explanation: a = "text" and b = "book". a has 1 vowel whereas b has 2. Therefore, they are not alike. Notice that the vowel o is counted twice.Constraints:
2 <= s.length <= 1000
s.length
is even.s
consists of uppercase and lowercase letters.
解题思路:很简单的题目,可以采用头尾指针的方法,左边遇到元音加一,右边遇到元音减一,最后判断结果是否为零即可。
代码如下:
class Solution(object): def halvesAreAlike(self, s): """ :type s: str :rtype: bool """ count = 0 voewls = ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U') for i in range(len(s)/2): if s[i] in voewls: count +=1 if s[len(s)/2+i] in voewls: count -= 1 return count == 0