我经常通过练习Kata来提升编程能力。我发现这种方法对提高我的开发技能、编码效率以及最重要的算法思维非常有效。
Kata练习强化了最佳实践并培养了快速思考的能力。我认为,持续的练习能够建立起某种记忆模式和技巧,让编码过程更加快速和直观。
我是在codewars.com网站上发现这些挑战的,强烈推荐这个平台。
无需过多解释,直接来看例子:
我的解决方案如下:
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()); } }
测试用例:
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")); } }
以上就是全部内容,感谢您的阅读!
以上就是挑战一词 - 喃喃自语的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号