1704. Determine if String Halves Are Alike
Description
You are given a string s
of even length. Split this string into two halves of equal lengths, and let a
be the first half and b
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 that s
contains uppercase and lowercase letters.
Return true
if a
and b
are alike. Otherwise, return false
.
Constraints
2 <= s.length <= 1000
s.length
is even.s
consists of uppercase and lowercase letters.
Approach
Links
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: s = "book"
Output: true
Explanation: a = "bo" and b = "ok". a has 1 vowel and b has 1 vowel. Therefore, they are alike.
Solutions
/**
* Time complexity : O(N), since we need to iterate substring a and b.
* Space complexity : O(1), since we do not need extra space.
* Here we do not take the input s into consideration.
*/
class Solution {
public boolean halvesAreAlike(String s) {
int vowelsDiff = 0;
for(int i = 0, j = s.length()-1; i < j; i++, j--) {
if(isVowel(s.charAt(i))) {
vowelsDiff++;
}
if(isVowel(s.charAt(j))) {
vowelsDiff--;
}
}
return vowelsDiff == 0;
}
private boolean isVowel(char ch) {
switch(ch) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': return true;
}
return false;
}
}
Follow up
Last updated
Was this helpful?