给定一个字符串,计算以'y'
或'z'
结尾的单词数量 - 这样{&1 34}中的'y'
重"和'z'
in" fez"计数,但不是'y'
in" yellow" (不区分大小写)。如果在其后面没有字母字母,我们会说y
或z
位于单词的末尾。 (注意:Character.isLetter(char)
测试char是否是字母。)
例如,
countYZ("fez day") → 2
countYZ("day fez") → 2
countYZ("day fyyyz") → 2
countYZ("day yak") → 1
countYZ("day:yak") → 1
countYZ("!!day--yaz!!") → 2
但我没有遇到这些情况:
countYZ("fez day") → should be 2 but Im getting 1
countYZ("day fez") → should be 2 but Im getting 1
countYZ("day fyyyz") → should be 2 but Im getting 1
smb可以看一下,看看我的代码有什么问题吗?提前谢谢!
public int countYZ(String str) {
int count = 0;
for(int i = 0; i < str.length()-1; i++){
if((str.charAt(i) == 'y' || str.charAt(i) == 'z')
&& !(Character.isLetter(str.charAt(i + 1)))){
count++;
}
}
return count;
}
答案 0 :(得分:3)
你需要在字符串的最末端包含单词的角点的逻辑。
答案 1 :(得分:1)
由于您使用regex
标记了该问题,因此这是使用regular expressions的解决方案:
public int countYZ(String str) {
Matcher m = Pattern.compile("[yz]\\b").matcher(str);
int count = 0;
while (m.find())
count++;
return count;
}
这里,表达式"[yz]\\b"
表示&#34; y或z,后跟单词边界&#34;,即只要在单词的末尾有y或z,它就匹配。只计算比赛。