-
-
Notifications
You must be signed in to change notification settings - Fork 299
/
884.java
77 lines (77 loc) · 2.68 KB
/
884.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
__________________________________________________________________________________________________
sample 1 ms submission
class Solution {
public String[] uncommonFromSentences(String A, String B) {
HashMap<String, Integer> map = new HashMap<>();
List<String> wordList = new ArrayList<>();
simpleSplit(A, wordList);
simpleSplit(B, wordList);
int wordNum = wordList.size(), count = 0;
boolean[] commons = new boolean[wordNum];
for(int i = 0; i < wordNum; ++i){
String word = wordList.get(i);
Integer b = map.get(word);
if(b == null){
map.put(word, i);
commons[i] = true;
++count;
}else{
if(b != -1){
--count;
commons[b] = false;
map.replace(word, b, -1);
}
}
}
String[] result = new String[count];
for(int i = 0, index = 0; i < wordNum; ++i){
if(commons[i]){
result[index++] = wordList.get(i);
}
}
return result;
}
private void simpleSplit(String str, List<String> wordList){
int len = str.length(), begin = 0, end = 0;
while(begin < len){
end = begin;
while(++end < len && str.charAt(end) != ' ');
wordList.add(str.substring(begin, end));
begin = end + 1;
}
}
}
__________________________________________________________________________________________________
sample 35064 kb submission
class Solution {
public String[] uncommonFromSentences(String A, String B) {
Map<String,Integer> map = new HashMap();
String []listA = A.split(" ");
String []listB = B.split(" ");
for(int i=0;i<listA.length;i++){
if(map.containsKey(listA[i])){
int val = map.get(listA[i]);
map.put(listA[i],++val);
}else{
map.put(listA[i],1);
}
}
for(int j=0;j<listB.length;j++){
if(map.containsKey(listB[j])){
int val = map.get(listB[j]);
map.put(listB[j],++val);
}else{
map.put(listB[j],1);
}
}
Map<String,Integer> res = map.
entrySet().
stream().
filter(x->x.getValue()==1).
collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
List<String> res1 = res.keySet().stream().collect(Collectors.toList());
String [] result = res1.stream().toArray(String[]::new);
return result;
}
}
__________________________________________________________________________________________________