最近换了项目做,跟开发相差有点大了 发现自己不会写代码了 为了让自己多学点 开始在code war上练题了,从简单的开始 争取一天一题 锻炼自己开发同时巩固知识
Take 2 strings s1
and s2
including only letters from a
to 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"
import java.util.Arrays; public class Main { public static void main(String[] args) { String a = "xyaabbbccccdefww"; String b = "xxxxyyyyabklmopq"; System.out.print("\n"+longest(a,b)); } public static String longest (String s1, String s2) { // your code String tmp; String output=""; if (!s1.isEmpty()&&!s2.isEmpty()){ tmp=s1.equals(s2)?s1:s1+s2; char[] chars=tmp.toCharArray(); Arrays.sort(chars); output=String.valueOf(chars[0]); for (int i=1;i<tmp.length();i++) { // System.out.print("char[i]="+String.valueOf(chars[i])+"output="+output); if (!String.valueOf(chars[i]).equals(output.substring(output.length()-1))) { output+=chars[i]; } } } return output; } }
发现其他人的解决办法比自己的好太多了,也要简洁很多呀!!
他人一:
public class TwoToOne { public static String longest (String s1, String s2) { String s = s1 + s2; return s.chars().distinct().sorted().collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString(); } }
二:
public class TwoToOne { public static String longest (String s1, String s2) { StringBuilder sb = new StringBuilder(); (s1 + s2).chars().distinct().sorted().forEach(c -> sb.append((char) c)); return sb.toString(); } }
三:
public static String longest (String s1, String s2) { String all = "abcdefghijklmnopqrstuvwxyz"; return all.replaceAll("[^" + s1+s2 + "]", ""); }
。。。。。。