0

0

挑战一词 - 喃喃自语

霞舞

霞舞

发布时间:2025-02-03 08:42:20

|

718人浏览过

|

来源于php中文网

原创

挑战一词 - 喃喃自语

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

Kata练习强化了最佳实践并培养了快速思考的能力。我认为,持续的练习能够建立起某种记忆模式和技巧,让编码过程更加快速和直观。

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

无需过多解释,直接来看例子:

Powtoon
Powtoon

AI创建令人惊叹的动画短片及简报

下载
  • 输入 "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"));
    }

}

以上就是全部内容,感谢您的阅读!

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

404

2023.08.14

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

28

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

378

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

115

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号