作者:温蚊童鞋_612 | 来源:互联网 | 2023-05-18 14:42
Asthecommentinmycodeexplains,thetaskistofindthenumberofpairsofstringsfromagiven
As the comment in my code explains, the task is to find the number of pairs of strings from a given input file which are permutations of each other. For example, "ABCD" and "BCDA" are permutations of each other, meaning that a pair has been found.
正如我的代码中的注释所解释的那样,任务是找到给定输入文件中的字符串对的数量,这些字符串是彼此的排列。例如,“ABCD”和“BCDA”是彼此的排列,意味着已经找到了一对。
The main bulk of my program is then as follow:
我的程序的主要部分如下:
/**
* Finds the number of pairs of strings that are permutations of each other.
*
* A hash map is created with a hash code generated from the array formed using the getFrequency
* method as key and a pair containing a string array and the number of times a permutation of that
* particular string array has been found as value.
*
* If a permutation is already in the hash table previously, increment the counter.
*/
public static int findPairs(String fileName) {
try {
//Sets up the necessary file readers
FileReader dataFile = new FileReader(fileName);
BufferedReader bufferedDataFile = new BufferedReader(dataFile);
String line = bufferedDataFile.readLine();
//Finds the number of entries in the file
int num = Integer.parseInt(line);
int counter = 0;
int accumulator = 0;
HashMap store = new HashMap<>();
for (int i = 0; i
What are some potential problems which can result from such manipulation of Java's hashCode
and Arrays
implementations? This is particularly because I have been given some private test cases to pass, and while I can pass a number of them, there's one which I repeatedly fail. I suspect it has to do with the way I am dealing with collisions... But although I have inspected this multiple times, I am still uncertain where the error might possibly lie. Any help is much appreciated!
Java的hashCode和Arrays实现的这种操作会导致哪些潜在的问题?这尤其是因为我已经获得了一些私有测试用例,虽然我可以通过其中一些,但是我反复失败了。我怀疑它与我处理碰撞的方式有关......但是虽然我多次检查过这个问题,但我仍然不确定错误可能在哪里。任何帮助深表感谢!
EDIT: As per request, here is my getFrequency method:
编辑:根据要求,这是我的getFrequency方法:
public static int[] getFrequency(String s) {
//There are 128 legal ascii characters
int[] charArr = new int[128];
//Iterate through the given string, and increment the count for a character using its
//ascii value to locate its position in the array
for (int i = 0; i
EDIT 2: And Pair:
编辑2:和配对:
public class Pair {
private int[] m_arr;
private int m_count;
public Pair(int[] arr, int count) {
this.m_arr = arr;
this.m_count = count;
}
public int[] getArr() {
return this.m_arr;
}
public int getCount() {
return this.m_count;
}
public void updateCount() {
this.m_count++;
}
}
1 个解决方案