我正在练习codewars,并开始做我的第一个挑战,这是关于以下内容:
给出了这个词集。如果一个单词的最后一个字母和另一个单词的第一个字母相同,则单词连接。如果集合中的所有单词都可以组合成一个单词,返回true。每个单词只能使用一次。否则返回false。
输入由3到7个随机长度的字组成的数组。没有大写字母
真实的例子场景:挖掘,忍受,欲望,屏幕,戏剧,过剩,夜晚。千足虫:欲望忍耐挖掘多余的屏幕夜场。
错误的例子设置:贸易,杆子,视图,坟墓,梯子,蘑菇,总统。千足虫:贸易总统。
下面是我的代码:public class Millipede {
public static boolean check(String[] millipede) {
boolean itCombines = true;
String setOfWords1 = "";
String setOfWords2 = "";
for (int i = 0; i < millipede.length - 1; i++) {
if (!millipede[i].equals(millipede[i + 1])) {
setOfWords1 = millipede[i];
setOfWords2 = millipede[i + 1];
if (setOfWords1.charAt(setOfWords1.length() - 1) == setOfWords2.charAt(0)) {
return itCombines;
} else {
return !itCombines;
}
}
} return itCombines;
}
}
当我点击TEST按钮时,一切都很好,所有的测试都通过了,但是当我点击尝试按钮时,它失败了3,但通过了4。
FAILS:
fiveWords()
screen, desire, theater, excess, night ==> expected: <true> but was: <false>
randomTests()
engine, entertainment, extract, thesis ==> expected: <false> but was: <true>
oneLetterWords()
east, e, e, t, t, e, time ==> expected: <true> but was: <false>
我试图使用Random类来获得随机索引,以便比较不同位置的字符串,但这会使测试失败。
你的旅程开始得对吗?对于新手来说,直接进入代码战是具有挑战性和令人沮丧的。
从你的代码中我可以看出你犯了一个很大的错误。你基本上检查下一个单词是否可以被连接,如果是,你返回真。然而,你应该检查所有的单词和它们之间所有可能的组合,然后才返回真或假(一种可能的方法)。
尝试解决更简单的问题,通过书籍或教程学习,解决这些问题并不是初学者学习编程的关键途径。有很多资源可以免费帮助你:youtube/geek4geeks/tutorialpoint/baeldung和更多