-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathFindAnagrams.java
More file actions
48 lines (44 loc) · 1.51 KB
/
FindAnagrams.java
File metadata and controls
48 lines (44 loc) · 1.51 KB
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
import java.io.*;
import java.util.*;
public class FindAnagrams {
public static void main(String[] args) {
String filePath = "SampleData.txt";
List<String> anagramWords = anagramsList(filePath);
for (String words : anagramWords) {
System.out.println(words);
}
}
public static List<String> anagramsList(String filePath) {
//ADD YOUR CODE HERE
List<String> anagrams = new ArrayList<String>();
try{
FileInputStream fin = new FileInputStream(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
Map<String, String> anaDict = new LinkedHashMap<String, String>();
String word = "";
while((word = br.readLine()) != null){
word = word.toLowerCase();
String key = generateKey(word);
if(anaDict.containsKey(key)){
anaDict.put(key, anaDict.get(key) + "," + word);
} else {
anaDict.put(key, word);
}
}
for(String key : anaDict.keySet()){
String value = anaDict.get(key);
if(value.indexOf(",") > 0 ){
anagrams.add(value);
}
}
}catch(Exception e){
System.out.println(e.getClass());
}
return anagrams;
}
public static String generateKey(String word){
char[] let = word.toCharArray();
Arrays.sort(let);
return new String(let);
}
}