
我经常通过练习Kata来提升编程能力。我发现这种方法对提高我的开发技能、编码效率以及最重要的算法思维非常有效。
Kata练习强化了最佳实践并培养了快速思考的能力。我认为,持续的练习能够建立起某种记忆模式和技巧,让编码过程更加快速和直观。
我是在codewars.com网站上发现这些挑战的,强烈推荐这个平台。
无需过多解释,直接来看例子:
我的解决方案如下:
<code class="java">import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Accumul {
public static String accum(final String text) {
if (text == null) {
throw new IllegalArgumentException();
}
return IntStream.range(0, text.length())
.mapToObj(i -> singleCharToWord(text.charAt(i), i))
.collect(Collectors.joining("-"));
}
private static String singleCharToWord(final char charAt, final int index) {
return String.valueOf(charAt).toUpperCase() + IntStream.range(1, index + 1)
.mapToObj(i -> String.valueOf(charAt).toLowerCase())
.collect(Collectors.joining());
}
}</code>测试用例:
<code class="java">public class AccumulTest {
@Test
public void testWhenGivenNullAsInput() {
assertThrows(IllegalArgumentException.class, () -> {
Accumul.accum(null);
});
}
@Test
public void test() {
assertEquals("", Accumul.accum(""));
assertEquals("A", Accumul.accum("a"));
assertEquals("A-Bb", Accumul.accum("ab"));
assertEquals("Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu", Accumul.accum("ZpglnRxqenU"));
assertEquals("N-Yy-Fff-Ffff-Sssss-Gggggg-Eeeeeee-Yyyyyyyy-Yyyyyyyyy-Llllllllll-Bbbbbbbbbbb", Accumul.accum("NyffsGeyylB"));
assertEquals("M-Jj-Ttt-Kkkk-Uuuuu-Bbbbbb-Ooooooo-Vvvvvvvv-Qqqqqqqqq-Rrrrrrrrrr-Uuuuuuuuuuu", Accumul.accum("MjtkuBovqrU"));
assertEquals("E-Vv-Iii-Dddd-Jjjjj-Uuuuuu-Nnnnnnn-Oooooooo-Kkkkkkkkk-Mmmmmmmmmm-Mmmmmmmmmmm", Accumul.accum("EvidjUnokmM"));
assertEquals("H-Bb-Iii-Dddd-Eeeee-Vvvvvv-Bbbbbbb-Xxxxxxxx-Nnnnnnnnn-Cccccccccc-Ccccccccccc", Accumul.accum("HbideVbxncC"));
}
}</code>以上就是全部内容,感谢您的阅读!
以上就是挑战一词 - 喃喃自语的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号