哪能刷java题_Java 刷题(一)

Codewars 刷题第一天,字符串问题:

题目:

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" ```

题目要求:构造longest(String a,String b)函数,输出String a,String b 中所有出现过的字符,且只输出一次,并且按照字母表的顺序。

解析:字符串的但单个字符遍历,然后将出现的不同的ASII码的值存下来,再进行排序输出!

答案(1)

public static String longest(String a,String b){

String re ="";

int [] letters=new int [26];

for(int i=0;i

letters[a.charAt(i)-‘a‘]=1;

}

for(int j=0;j

letters[b.charAt(j)-‘a‘]=1;

}

for(int k=0;k

if(letters[k]==1){

re+=(char)(k+‘a‘);

}

}

return re;

}

答案(2)

public static String longest (String s1, String s2) {

return (s1 + s2).chars().distinct().mapToObj(c -> String.valueOf((char)c)).sorted().collect(Collectors.joining());

}

答案(1)中需要注意区分 String re=null;String re=" ";String re="";的区别。

如果re=null代表空对象,即还没创建出对象,就是还没开辟空间,。

如果re= ""表示创建出了对象,但是这个对象内容为空,也就是空字符串。

如果re= " "表示创建出了对象,但是这个对象内容为不为空,而是空格。

答案(2) 中,应用了大家喜闻乐见的Collector收集齐,告别for循环,拼接字符串。对s1+s2进行map封装,distinct去重。

Codewars 刷题第一天,字符串问题: 题目: 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" ``` 题目要求:构造longest(String a,String b)函数,输出String a,String b 中所有出现过的字符,且只输出一次,并且按照字母表的顺序。 解析:字符串的但单个字符遍历,然后将出现的不同的ASII码的值存下来,再进行排序输出! 答案(1) public static String longest(String a,String b){ String re =""; int [] letters=new int [26]; for(int i=0;i letters[a.charAt(i)-‘a‘]=1; } for(int j=0;j letters[b.charAt(j)-‘a‘]=1; } for(int k=0;k if(letters[k]==1){ re+=(char)(k+‘a‘); } } return re; } 答案(2) public static String longest (String s1, String s2) { return (s1 + s2).chars().distinct().mapToObj(c -> String.valueOf((char)c)).sorted().collect(Collectors.joining()); } 答案(1)中需要注意区分 String re=null;String re=" ";String re="";的区别。 如果re=null代表空对象,即还没创建出对象,就是还没开辟空间,。 如果re= ""表示创建出了对象,但是这个对象内容为空,也就是空字符串。 如果re= " "表示创建出了对象,但是这个对象内容为不为空,而是空格。 答案(2) 中,应用了大家喜闻乐见的Collector收集齐,告别for循环,拼接字符串。对s1+s2进行map封装,distinct去重。
经验分享 程序员 微信小程序 职场和发展