Codewars Java练习:Two to One

题目名称

TwoToOne

题目

Take 2 strings s1 and s2 including only letters from ato z. Return a new sorted string, the longest possible, containing distinct letters,

  • each taken only once – coming from s1 or s2.

Examples:

a = “xyaabbbccccdefww” b = “xxxxyyyyabklmopq”

longest(a, b) -> “abcdefklmopqwxy”

a = “abcdefghijklmnopqrstuvwxyz”

longest(a, a) -> “abcdefghijklmnopqrstuvwxyz”

题目大意

给定两个字符串,将其加起来,去重,排序后输出。

题解

刻意练习了一下ArrayList类似的容器的使用方式,发现这类问题通常有两个核心要点——

  • 如何将原始元素类型转化为对象形式,比如本题中如何将char数组和Character数组相互转换——
    • 事实上,这个转换在后期的Java版本中有ArrayUtils类提供转换函数
    • 而在早起的版本中,只有通过for语句逐个元素构造
  • 如何在内置数组、ArrayList之间转化
  • 如何在可重ArrayList和不可重的HashSet之间转化。

标准答案

最后欣赏一下标准答案——

代码使用了String的chars()函数,返回了一个IntStream类,这个类支持了后续的所有的过滤变换操作。

原创文章地址:【Codewars Java练习:Two to One】,转载时请注明出处mhy12345.xyz

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据