当前位置: 首页 > 图灵资讯 > 技术篇> 挑战一词 - 喃喃自语

挑战一词 - 喃喃自语

来源:图灵教育
时间:2025-02-07 16:42:50

挑战一词 - 喃喃自语

我经常通过练习Kata来提高编程能力。我发现这种方法对提高我的开发技能、编码效率和最重要的算法思维非常有效。

Kata练习加强了最佳实践,培养了快速思考的能力。在我看来,持续的练习可以建立一定的记忆模式和技能,使编码过程更快、更直观。

我在codewars中.在com网站上发现这些挑战的,强烈推荐这个平台。

直接看例子,不需要太多的解释:

  • 输入 "rqaezty",输出 "r-qq-aaa-eee-eee-zzzzzz-tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttyyyyyy"
  • 输入 "cwat",输出 "c-ww-aaa-tttt"

我的解决方案如下:

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"));
    }

}

以上就是全部内容。谢谢你的阅读!

以上是挑战一词 - 请关注图灵教育的其他相关文章!

上一篇:

开关语句和三元:

下一篇:

返回列表