Issue
I have this input:
["joe","oej","rat","tar","art","atb","tab"]
Using this code:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if (strs.length == 0) return new ArrayList();
Map<String, List> ans = new HashMap<String, List>();
for (String s : strs) {
char[] ca = s.toCharArray();
Arrays.sort(ca);
String key = String.valueOf(ca);
if (!ans.containsKey(key)) ans.put(key, new ArrayList());
ans.get(key).add(s);
}
return new ArrayList(ans.values());
}
}
It correctly gives me this output:
[["rat","tar","art"],["atb","tab"],["joe","oej"]]
However, the format of the input and output is not exactly how I'd like it.
I would prefer for the input file to be a txt file called input.txt and within it show as;
joe
oej
rat
tar
art
atb
tab
and for the output to be stored in a new txt file called output.txt like this;
atb tab
joe oej
art rat tar
What I have attempted to do to read the input txt file is within my main:
File file = new File(args[0]);
Scanner scan = new Scanner(file);
and to write my output file:
FileWriter writer = new FileWriter("output.txt");
writer.write(fileContent);
writer.close();
My question is: can the second letter segments be simply implemented into the class Solution
?
Solution
If I understood correctly you would like to read the input from a file and write the output to a file directly in the Solution class. To do that you can create a new method in Solution and add that logic before and after calling groupAnagrams.
class Solution {
public void fromFile(String inputFilename){
// Open the file inputFilename here
// Read the lines into a string array
List<List<String>> groupAnagrams(strs);
// Create the output file
// Write the result in the file
}
public List<List<String>> groupAnagrams(String[] strs) {
//...
}
}
In this way you don't need to change the method groupAnagram.
Answered By - Marc Answer Checked By - Mary Flores (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.