Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 漂亮的词:黑客银行_Java - Fatal编程技术网

Java 漂亮的词:黑客银行

Java 漂亮的词:黑客银行,java,Java,问题 如果满足以下两个条件,我们认为一个词w是优美的: 没有两个连续字符是相同的。 以下元音集中没有两个连续字符:a、e、i、o、u、y。请注意,在这个挑战中,我们认为Y是元音。 例如: 字符串蝙蝠侠是美丽的,因为它满足给定的标准;然而,apple有两个连续出现的相同字母(pp),beauty有三个连续的元音(eau),因此这些单词并不美丽 我的问题是当我给一个输入字符串“是”时,它会打印是,但它应该打印否 当我使用Intellij调试代码时,我看到了这一点 它执行的代码是过去的return语句

问题 如果满足以下两个条件,我们认为一个词w是优美的:

没有两个连续字符是相同的。 以下元音集中没有两个连续字符:a、e、i、o、u、y。请注意,在这个挑战中,我们认为Y是元音。 例如:

字符串蝙蝠侠是美丽的,因为它满足给定的标准;然而,apple有两个连续出现的相同字母(pp),beauty有三个连续的元音(eau),因此这些单词并不美丽

我的问题是当我给一个输入字符串“是”时,它会打印,但它应该打印

当我使用Intellij调试代码时,我看到了这一点 它执行的代码是过去的return语句,但return语句用于将控制转移到主函数

解决方案

public class Coding {
    int count = 0;

    public static void main(String[] args) {

        Coding obj = new Coding();

        Scanner in = new Scanner(System.in);
        String w = in .next();
        boolean b = true;
        char[] c = w.toCharArray(); 
        for (int i = 0; i < c.length - 2; i++) {
            b = obj.check(i, c);  //recursive function
            if (c[i] == c[i + 1]) {
                b = false;
                break;
            }
            if (!b) {
                System.out.println("No");
                break;
            }
        }
        if (c[c.length - 2] == c[c.length - 1]) //check.for.the.remaining.chars
            System.out.println("No");
        else if (b) {
            System.out.println("Yes");
        }
    }

    public boolean check(int i, char[] c) {
        if (c[i] == 'a' || c[i] == 'e' || c[i] == 'i' || c[i] == 'o' || c[i] == 'u' || c[i] == 'y') {

            count++;
            if (count == 2) {
                return false; // code following this statement are executing
            }
            check(i + 1, c);
        }

        count = 0;

        return true;
    }
}

公共类编码{
整数计数=0;
公共静态void main(字符串[]args){
编码对象=新编码();
扫描仪输入=新扫描仪(系统输入);
字符串w=in.next();
布尔b=真;
char[]c=w.toCharArray();
对于(int i=0;i
您正在进行递归调用,但忽略了该调用的结果

那没有道理。无论哪个调用有效,那么您都应该返回返回的内容。或者递归不“属于”那里,那么您应该重新编写完整的方法


除此之外:尽管递归解决方案通常看起来很优雅,但这些争论的焦点是最佳性能。含义:而是使用单个循环将该字符串迭代一次

提示:问题似乎出在方法
count
上。它总是将
true
返回到
main
方法。如果任何递归调用返回
false
,它是否会传播回main方法?

如果更改
检查(i+1,c),会发生什么情况到<代码>返回检查(i+1,c)?根据hackerrank事件规则(目前正在进行中),如果发现剽窃,两名参与者都将被取消资格。如果有人修复并复制了您的解决方案,这将影响到你们双方。也许你应该掩盖这个问题与hackerrank活动事件有关到<代码>返回检查(i+1,c)会有用的。哦,我把它弄坏了吗?