码迷,mamicode.com
首页 > 编程语言 > 详细

Java 刷题(一)

时间:2018-04-19 01:55:48      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:code   for   构造   min   封装   ted   ati   不同   from   

 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<a.length();i++){
            letters[a.charAt(i)-‘a‘]=1;     
        }
        for(int j=0;j<b.length();j++){
    letters[b.charAt(j)-‘a‘]=1;     
        }
        for(int k=0;k<letters.length;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="";的区别。
  1.   如果re=null代表空对象,即还没创建出对象,就是还没开辟空间,。    
  2.   如果re= ""表示创建出了对象,但是这个对象内容为空,也就是空字符串。    
  3.   如果re= " "表示创建出了对象,但是这个对象内容为不为空,而是空格。 

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

 

 

 

 

 

 

 

 

 

 

Java 刷题(一)

标签:code   for   构造   min   封装   ted   ati   不同   from   

原文地址:https://www.cnblogs.com/Jaiken/p/8878696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!