You have a given two string pattern and s(word). The first string pattern contains only the symbols 0 and 1 and the second string s contains only lowercase english letters.
Lets's say that pattern matches a substring s[1..r] or s if the following 3 conditions are met:
- they have equal length
- for each 0 in pattern the corresponding letter in the substring is a vowel
- for each 1 in pattern the corresponding letter is a consonant.
Your task is to calculate the number of substrings of s that match pattern.
Note: in this task we defines the vowels as 'a', 'e', 'i', 'o', 'u' and 'y'. All other letters are constants.
Here is the solutions:
public class Test {
public static void main(String[] args) {
String pattern = "010";
String s = "amazing";
System.out.println("Total no occurrences: " + countMatches(pattern, s));
}
private static int countMatches(String pattern, String s) {
int pLen = pattern.length();
int sLen = s.length();
int matches = 0, fromIndex = 0;
if( pLen != sLen) {
String fs = s.replaceAll("[aeiouy]", "0").replaceAll("[bcdfghjklmnpqrstvwxz]", "1");
while ((fromIndex = fs.indexOf(pattern, fromIndex)) != -1) {
matches++;
fromIndex++;
}
}
return matches;
}
}
Output: Total occurrences: 2
Thanks and Enjoy !!!
0 comments:
Post a Comment