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

在单词末尾对 y 和 z 进行计数

融渊
2023-03-14

这就是问题所在:给定一个字符串,计算以“y”或“z”结尾的单词的数量——因此“重”中的“y”和“fez”中的'z”都会计数,但“黄色”中的‘y’不会计数(不区分大小写)。如果一个单词后面没有一个字母,我们会说一个y或z在单词的末尾。(注意:Character.islet(char)测试char是否为字母。)

countYZ("fez day") → 2
countYZ("day fez") → 2
countYZ("day fyyyz") → 2

这是我的代码:

public int countYZ(String str) {
  int count = 0;
  for (int i=0; i<str.length(); i++){
  if (Character.isLetter(i) && (Character.isLetter(i+1)==false || i+1==str.length()) && (Character.toLowerCase(str.charAt(i))=='y' || Character.toLowerCase(str.charAt(i))=='z')){
  count++;
  }
  }
  return count;
}

我知道这很混乱,但我只是想弄清楚为什么现在不行。每次运行都返回“0”。在if语句中,我检查:我是一封信吗?i 1是字母还是字符串的结尾?最后,如果我是“y”或“z”。感谢您的帮助!

共有3个答案

蓬化
2023-03-14

尝试此修复程序

    for (int i = 0; i < str.length(); i++) {
        if ((Character.toLowerCase(str.charAt(i)) == 'y' || Character
                .toLowerCase(str.charAt(i)) == 'z')
                && i == str.length() - 1
                || !Character.isLetter(str.charAt(i + 1))) {
            count++;
        }
    }
贺佑运
2023-03-14

使用拆分()结束与()

public static int countYZ(String str) {
        int count = 0;
        String temp[] = str.split(" ");
        for (int i = 0; i < temp.length; i++) {
            if (temp[i].trim().endsWith("y") || temp[i].trim().endsWith("z"))
                count++;
        }
        return count;
    }

输出:根据需要为您的所有案例

countYZ("fez day") → 2
countYZ("day fez") → 2
countYZ("day fyyyz") → 2
辛龙野
2023-03-14

您可以使用正则表达式:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public int countYZ(String str) {
    int count = 0;
    Pattern regex = Pattern.compile("[yz](?!\\p{L})", Pattern.CASE_INSENSITIVE);
    Matcher regexMatcher = regex.matcher(str);
    while (regexMatcher.find()) {
        count++;
    } 
    return count;
}

说明:

[yz]      # Match the letter y or z
(?!\p{L}) # Assert that no letter follows after that
 类似资料:
  • 给定一个字符串,计算以或结尾的字数——所以“重”中的和“fez”中的计数,但不是“黄色”中的(不区分大小写)。如果单词后面没有字母,我们会说或在单词的末尾。(注意:测试char是否是字母。) 例如, 但我在这些案例中失败了: smb能看看我的代码有什么问题吗?提前感谢!

  • 在IntelliJ中,我们可以使用Alt Shift Insert在每行的同一位置进行多行编辑。当每行的长度不同时,我们可以在每行的末尾进行多行编辑吗?使用场景是在每行末尾编辑分号。 谢谢。

  • 问题内容: 我有一个文本区域,其中包含一些文本,我想再次向其中添加一些行(第一行+我要添加的其他行),但是它不起作用。 我现在的操作方式将擦除旧文本并仅显示新行。 问题答案: 代替使用,使用。 将给定的文本追加到文档末尾。如果模型为null或字符串为null或为空,则不执行任何操作。 这会将文字添加到您的末尾。 另一个选择是使用来从中获取文本,然后操作String(添加或删除或更改String),

  • 问题内容: 我需要删除单词的第一个字母并将其移到末尾,例如: 到目前为止,我已经尝试过了: 但是,我应该如何将第一个字母移到末尾? 问题答案: 您可以使用:

  • 问题内容: 我需要帮助对字符串中单词的实例进行排序和计数。 可以说我有一个单词集合: 快乐美丽快乐线梨杜松子酒快乐线岩石快乐线梨 我如何使用php计算字符串中每个单词的每个实例并在循环中输出它: 这样上面的循环将输出: 有4个快乐实例。 有3行实例。 杜松子酒有2个实例。 问题答案: 使用的组合和: 给 将在品牌函数返回的所有找到的单词的数组。 要对条目进行排序,请使用(保留键):

  • 我试图找到唯一的单词,以及它们重复了多少次。 尝试用python编写相同的代码。 输入数据集: 输出数据集: