1. 程式人生 > >Java 刷題(一)

Java 刷題(一)

tinc abc 不同的 bsp for take collect long 區別

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 刷題(一)