937. 從新排列日誌文件數組
一個簡單題讓我作了將近一個小時去。。this
你有一個日誌數組 logs
。每條日誌都是以空格分隔的字串。spa
對於每條日誌,其第一個字爲字母數字標識符。而後,要麼:日誌
咱們將這兩種日誌分別稱爲字母日誌和數字日誌。保證每一個日誌在其標識符後面至少有一個字。code
將日誌從新排序,使得全部字母日誌都排在數字日誌以前。字母日誌按字母順序排序,忽略標識符,標識符僅用於表示關係。數字日誌應該按原來的順序排列。blog
返回日誌的最終順序。排序
示例 :leetcode
輸入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"] 輸出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]
提示:rem
0 <= logs.length <= 100
3 <= logs[i].length <= 100
logs[i]
保證有一個標識符,而且標識符後面有一個字。class Solution { class MyString{ String all; String part; public MyString(String all,String part){ this.all=all; this.part=part; } } public String[] reorderLogFiles(String[] logs) { String[]result=new String[logs.length]; int count=0; List<String>numList=new ArrayList<String>(); String before=null; String key=null; List<MyString>mystring=new ArrayList<MyString>(); for(int i=0;i<logs.length;i++){ String[]tmp=logs[i].split(" "); if(tmp[1].charAt(0)>='0'&&tmp[1].charAt(0)<='9') numList.add(logs[i]); else{ String ch[]=logs[i].split(tmp[0]+" "); MyString str=new MyString(logs[i],ch[1]); mystring.add(str); } } int len=mystring.size(); for(int i=0;i<len;i++){ MyString str=mystring.get(0); key=mystring.get(0).all; before=mystring.get(0).part; for(int j=1;j<mystring.size();j++){ //System.out.println(before); // System.out.println(mystring.get(j).part); //System.out.println(mystring.get(j).part.compareTo(before)>=0); if(mystring.get(j).part.compareTo(before)<0){ str=mystring.get(j); key=mystring.get(j).all; before=mystring.get(j).part; } } mystring.remove(str); result[count++]=key; } for(int i=0;i<numList.size();i++) result[count++]=numList.get(i); return result; } }
929. 獨特的電子郵件地址get
每封電子郵件都由一個本地名稱和一個域名組成,以 @ 符號分隔。
例如,在 alice@leetcode.com
中, alice
是本地名稱,而 leetcode.com
是域名。
除了小寫字母,這些電子郵件還可能包含 ','
或 '+'
。
若是在電子郵件地址的本地名稱部分中的某些字符之間添加句點('.'
),則發往那裏的郵件將會轉發到本地名稱中沒有點的同一地址。例如,"alice.z@leetcode.com」
和 「alicez@leetcode.com」
會轉發到同一電子郵件地址。 (請注意,此規則不適用於域名。)
若是在本地名稱中添加加號('+'
),則會忽略第一個加號後面的全部內容。這容許過濾某些電子郵件,例如 m.y+name@email.com
將轉發到 my@email.com
。 (一樣,此規則不適用於域名。)
能夠同時使用這兩個規則。
給定電子郵件列表 emails
,咱們會向列表中的每一個地址發送一封電子郵件。實際收到郵件的不一樣地址有多少?
示例:
輸入:["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"] 輸出:2 解釋:實際收到郵件的是 "testemail@leetcode.com" 和 "testemail@lee.tcode.com"。
提示:
1 <= emails[i].length <= 100
1 <= emails.length <= 100
emails[i]
都包含有且僅有一個 '@'
字符。public int numUniqueEmails(String[] emails) { Set<String>set=new HashSet<String>(); for(int i=0;i<emails.length;i++){ String[]tmp=emails[i].split("@"); String yu=tmp[1]; String name=tmp[0]; String[]tmp2=name.split("/+"); String nameFinal[]=tmp2[0].split("."); String re=""; for(int j=0;j<nameFinal.length;j++) re+=nameFinal[j]; re+=yu; if(!set.contains(re)) set.add(re); } return set.size(); }
思路很簡單,就是用String效率很低