java - 使用递归方法来确定一个单词是否是 elf-ish

标签 java recursion

public static boolean Xish

此方法应按以下顺序接受两个参数:要检查的单词的字符串和由要检查的字母组成的字符串。例如,如果一个单词以任意顺序包含字母 e、l 和 f,则该单词被视为 elf-ish (“waffle”, “rainleaf”)该方法的真实返回值为 Xish(“waffle”, ”elf”) 。如果要检查某个字母多次出现,则该字母必须在搜索词中出现多次。如果单词包含所有需要的字符,则返回 true;如果不包含所有字符,则返回 false。

这是我到目前为止所拥有的,但我不知道如何记忆该方法并检查是否存在多次出现(第二部分)。

public static boolean Xish(String check, String letters) {
        String word = check;
        String contains= letters;

        if(word.indexOf(contains) >= 0)
            return true;
        else
            return false;
    }

最佳答案

实际上,递归执行此操作也可以解决多次出现的问题。

首先,您自己的方法并不真正正确 - 它会查找单词中的整个字母。也就是说,如果 letterself,那么 self 将会返回 true,但 heartfelt 则不会返回 true,并且那是错误的。您应该查找各个字母,因为顺序并不重要。

对于递归:

  1. 如果字母是空字符串 - 返回 true。你可以说,只要没有限制,任何词都可以。

  2. 如果check 是空字符串 - 返回 false。空字符串不包含letters中的字母(并且我们已经知道letters不为空)。

  3. 字母中的第一个字母。在检查中查找它。如果不存在,则返回 false。

  4. 如果存在,则调用相同的方法,但仅传递 checkletters 的剩余部分。例如,如果 checkselfish 并且 letterself,那么您会发现 e 存在。返回Xish("slfish","lf")的结果。这将处理多次发生的情况。您可以通过使用substring并连接适用的部分来实现这一点。

如果多次出现不是问题,您可以按原样将检查传递到下一级递归。但由于它们很重要,我们需要为请求的每个字母删除一个字母,以确保我们不会在下一次出现时再次匹配相同的位置。

关于java - 使用递归方法来确定一个单词是否是 elf-ish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182272/

相关文章:

java - Java 和 C++ 的互操作性

java - java中FTPClient类的问题

java - 使用递归查找给定字符串中的最小字符

c++ - 如何获取n叉树中的元素

Python 数组旋转

python - 从此列表中递归地将所有文件和文件夹设置为 777

java - 使用 PowerMock 避免 wait() 方法时出现 IllegalMonitorStateException

java - 确定设备存储空间不工作 : android

java - JCheckbox 被选择时不显示标签中的文本

c++ - 多参数树遍历