当前位置: 首页 > 知识库问答 >
问题:

给定一个字符串,计算以“y”或“z”结尾的单词数

陆安国
2023-03-14

给定一个字符串,计算以'y''z'结尾的字数——所以“重”中的'y'和“fez”中的'z'计数,但不是“黄色”中的'y'(不区分大小写)。如果单词后面没有字母,我们会说yz在单词的末尾。(注意: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;
}

共有3个答案

司空俊雅
2023-03-14

此代码适用于此任务:

public int countYZ(String str) {
      int counter;
      String regex = "[YyZz](?!\\p{IsAlphabetic})"; 
      java.util.regex.Pattern yzEnd = java.util.regex.Pattern.compile(regex);
      java.util.regex.Matcher matcher = yzEnd.matcher(str);
      for (counter = 0; matcher.find(); counter++);
      return counter;
      
}

p{IsAlphabetic}与字符p{Isalphabettic}字面匹配(区分大小写)

竺捷
2023-03-14

由于您使用<code>regex

public int countYZ(String str) {
    Matcher m = Pattern.compile("[yz]\\b").matcher(str);
    int count = 0;
    while (m.find())
        count++;
    return count;
}

这里,表达式"[yz]\\b"表示"y或z,后跟单词边界",即只要单词末尾有y或z,它就匹配。只需计算匹配项。

养星汉
2023-03-14

你需要包括单词在字符串末尾的逻辑。

 类似资料:
  • 这就是问题所在:给定一个字符串,计算以“y”或“z”结尾的单词的数量——因此“重”中的“y”和“fez”中的'z”都会计数,但“黄色”中的‘y’不会计数(不区分大小写)。如果一个单词后面没有一个字母,我们会说一个y或z在单词的末尾。(注意:Character.islet(char)测试char是否为字母。) 这是我的代码: 我知道这很混乱,但我只是想弄清楚为什么现在不行。每次运行都返回“0”。在i

  • 问题内容: 我认为我已经很好地理解了这一点,但我认为该陈述是错误的。怎么说包含空格,加1。 编辑: 我发现(感谢Blender)可以用更少的代码来做到这一点: 问题答案: 使用方括号,而不是括号: 或: 您也可以使用:

  • 当读取文件时,将关键字flagstop、wb、nb、sb、eb从名称的开头移动到停止名称的结尾,例如“wb HASTINGS ST FS HOLDOM AVE”变为“HASTINGS ST FS HOLDOM AVE wb”。 到目前为止,我已经获得了如下所示的读取文件的代码,但我不确定如何将数组中的字符串关键字移动到字符串的结尾,给出了上面所示的条件。我需要能够移动第一个字在停止[2]如果它是上

  • 问题内容: 我是Java字符串的新手,问题是我想计算字符串中特定单词的出现次数。假设我的字符串是: 现在,我也不想拆分它,所以我想搜索一个“雄猫”这个词。它在我的字符串中出现了两次! 我正在尝试的是: 它给了我46个计数器的价值!那么解决方案是什么? 问题答案: 您可以使用以下代码: 演示版 它匹配。 表示在找到匹配项时执行循环内给出的任何操作。并且我将by 的值递增,因此很显然,这给出了一个字符

  • 有人能帮我写代码吗?如何在字符串文本中搜索单词,此单词以“.”结尾java中的“或” 我不想这样搜索来找到它

  • 我必须在数据库中找到所有有模式的记录。如果字段中的任何单词以特定字符串结尾。比如“is”: 所以像%is%或%is这样的简单操作是无效的。有没有什么正则表达式可以帮我做这件事?我也可以在PHP中使用LIKE%is%和filtring获得所有记录,但仍然没有任何线索如何。我有结束字符串的解决方案,但没有单词。