kata探险记(一)

简介: kata探险记(一)

   之前推荐的一个刷题平台:一个好玩的刷题平台,探索了有一小段时间了,来做一下阶段性的记录回顾。

1. 整体的感觉

   工欲善其事,必先利其器。这个codewars平台整体对工具的感觉会比leetcode更强烈一些。在做每一题的时候,都会深有体会。比如我用的是java,如果对jdk更熟悉一些,不敢说是一路坦途,至少在目前的阶段,是一片坦途。考验的更多的是自己对于某个语言的熟悉程度。

2. 与leetcode的不同    

通过上面第一点已经可以看出,codewars这个平台和leetcode完全是两个方向,但是并不冲突。leetcode重在算法,而codewars重在使用    单纯的算法可能并不足以让你对一门语言有更加深入的了解,因为实现起来并不需要太多的语言中已经有的原生方法,但是这些方法恰恰在实际使用中会让你事半功倍,受益无穷,这一点,正是codewars可以给予的,允许你尽最大可能使用更多的自带方式解决问题。3. 示例和一些记录
   当然,只是大段的文字赘述还是没有什么太深的感受,还是通过几个例子来记录一下,效果更好。

  • 题目:判断一个句子是否包含每个英文字母至少一次(a-z),不限大小写
  • 解答
通用方式:
public class PangramChecker {
  public boolean check(String sentence){
        for (char c = 'a'; c<='z'; c++)
            if (!sentence.toLowerCase().contains("" + c))
                return false;
        return true;
  }
}
流过滤的解法:
class PangramChecker {
    boolean check(final String sentence) {
        return sentence.chars()
            .filter(Character::isLetter)
            .map(Character::toLowerCase)
            .distinct()
            .count() == 26;
    }
}

题目:

示例:
46288 --> 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51
给定一个正整数 n,写成 abcd...(a, b, c, d... 是数字)和一个正整数 p
我们想要找到一个正整数 k,如果它存在的话,使得 n 的数字之和对 p 的连续幂等于 k * n。
换一种说法:
是否存在整数 k 使得:(a ^ p + b ^ (p+1) + c ^(p+2) + d ^ (p+3) + ...) = n * k

解答:

拿到之后,很容易跟着思路直接拆分开来算,通过除10逐步得到每一位。
但是多使用一下Java的方法就不会如此,反而会快很多:
public class DigPow {  
  public static long digPow(int n, int p) {
    String intString = String.valueOf(n);
    long sum = 0;
    for (int i = 0; i < intString.length(); ++i, ++p)
      sum += Math.pow(Character.getNumericValue(intString.charAt(i)), p);
    return (sum % n == 0) ? sum / n : -1;
  }
}
  • 题目:判断一个字符串是否以另一个字符串结尾
  • 解答:
除了挨个比较之外,还有很多辅助方法可用:
endWith:
public class Kata {
  public static boolean solution(String str, String ending) {
    return str.endsWith(ending);
  }
}
长度比较:
public class Kata {
  public static boolean solution(String str, String ending) {
    return str.length() >= ending.length() ? 
    str.substring(str.length()-ending.length()).equals(ending) : false;
  }
}

   最后,大家来各取所需吧,最重要的还是在练习过程中,不要过于拘泥当下,记得从题目中走出来,让思路更灵活一些~

相关文章
|
3月前
|
消息中间件 Kubernetes Cloud Native
iLogtail 开源两周年:感恩遇见,畅想未来
凡是过往,皆为序章;iLogtail 社区,是我们共同编织的果实。所有将来,皆为可盼;LoongCollector,是我们共筑的未来。
490 68
|
6月前
|
Kubernetes Cloud Native Linux
Docker已死?听听他怎么说(开课吧)
Docker已死?听听他怎么说(开课吧)
98 0
|
存储 监控 Devops
Docker与DevOps的无敌组合,引爆你的创新潜能
Docker与DevOps的无敌组合,引爆你的创新潜能
180 0
|
Kubernetes Linux Go
docker 与 podman 的故事:一个方兴未艾,一个异军突起
podman 虽然与 docker 有替代关系,但是在“弃用 docker”事件中,podman 并非是主角。Kubernetes 所进行的“弃用 docker”的主角是 CRI 的其他实现方式,而由 RedHat 推出的 podman 则更加前沿。在现实的应用中,docker 方兴未艾,podman 却已经异军突起。
320 1
docker 与 podman 的故事:一个方兴未艾,一个异军突起
|
缓存 JSON NoSQL
公司要新招美女跟我学docker,你来吗?(1)
公司要新招美女跟我学docker,你来吗?(1)
|
Ubuntu 应用服务中间件 Go
公司要新招美女跟我学docker,你来吗?(4)
公司要新招美女跟我学docker,你来吗?(4)
|
存储 Kubernetes 负载均衡
云原生新时代弄潮儿kubernetes看一眼,忍不住又看一眼?原来爱上了它?
Docker 已经统领云原生半壁江山的情况下,`kubernetes`怎么能异军突起?它有什么特殊的嘛?
135 1
云原生新时代弄潮儿kubernetes看一眼,忍不住又看一眼?原来爱上了它?
|
存储 运维 Kubernetes
Docker实践,来自沪江、滴滴、蘑菇街架构师的经验之谈
架构师小组交流会:每期选一个时下最热门的技术话题进行小组交流。 第一期主题:容器实践。Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化、可移植性是CI/CD,DevOps,微服务的重要实现技术。但目前技术还不够成熟,在生产实践中会遇到不少坑。本期参与小组交流的是国内较早采用 Docker 实践的公司。 参与嘉宾:沪江架构师黄凯、滴滴架构师田智伟、蘑菇街架构师张振华、蘑菇街运维架构师向靖、七牛技术总监袁晓沛、扇贝技术总监丁彦
223 0
|
容器 Kubernetes Cloud Native
不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
作者 | 王国梁  Kubernetes 社区成员与项目维护者原文标题《Kubernetes 应用之道:让 Kubernetes落地的“三板斧”》,首发于知乎专栏:进击的云计算原文地址:https://zhuanlan.zhihu.com/p/82666719 出身豪门、大厂背书的 Kubernetes 项目自 2014 年 6 月开源以来,在众多厂商和开源爱好者的共同努力下迅速崛起,时至今日已成长为容器管理领域的事实标准。
|
监控 Kubernetes 安全
是时候聊一下程序员争相追逐的“香馍馍” Istio了
本书是Istio服务网格技术的入门图书。
2212 0