|
| 1 | +import java.util.ArrayList; |
| 2 | +import java.util.HashMap; |
| 3 | +import java.util.List; |
| 4 | +import java.util.Map; |
| 5 | + |
| 6 | +public class UncommonWordsFromTwoSentences { |
| 7 | + public String[] uncommonFromSentences(String s1, String s2) { |
| 8 | + final Map<String, Integer> sentence1Words = getWordFrequencies(s1); |
| 9 | + final Map<String, Integer> sentence2Words = getWordFrequencies(s2); |
| 10 | + final List<String> result = new ArrayList<>(); |
| 11 | + for (Map.Entry<String, Integer> entry : sentence1Words.entrySet()) { |
| 12 | + if (entry.getValue() == 1 && !sentence2Words.containsKey(entry.getKey())) result.add(entry.getKey()); |
| 13 | + } |
| 14 | + for (Map.Entry<String, Integer> entry : sentence2Words.entrySet()) { |
| 15 | + if (entry.getValue() == 1 && !sentence1Words.containsKey(entry.getKey())) result.add(entry.getKey()); |
| 16 | + } |
| 17 | + return result.toArray(new String[] {}); |
| 18 | + } |
| 19 | + |
| 20 | + private Map<String, Integer> getWordFrequencies(String string) { |
| 21 | + final Map<String, Integer> map = new HashMap<>(); |
| 22 | + StringBuilder word =new StringBuilder(); |
| 23 | + String s; |
| 24 | + for (int index = 0 ; index < string.length() ; index++) { |
| 25 | + if (string.charAt(index) == ' ') { |
| 26 | + s = word.toString(); |
| 27 | + map.put(s, map.getOrDefault(s, 0) + 1); |
| 28 | + word = new StringBuilder(); |
| 29 | + } else word.append(string.charAt(index)); |
| 30 | + } |
| 31 | + s = word.toString(); |
| 32 | + map.put(s, map.getOrDefault(s, 0) + 1); |
| 33 | + return map; |
| 34 | + } |
| 35 | +} |
0 commit comments