我有一个问题,我必须删除数组中单词的同义词。例如;
merciful | gracious, kindly, forgiving
powerful | mighty, vigorous, forceful
在这种情况下,仁慈和强大是这两个词及其同义词。 我正在尝试删除给定单词的给定同义词。
例如,我必须在我的主类中实现这个定义,
SynonymHandler.removeSynonym(synonymData, "merciful", "gracious");
SynonymHandler 是包含remove 方法的类。
这就是我编写删除方法代码的方式。 getSynonymLine 已经给出 问题是,我只需要编写删除方法的代码,但它不起作用。 我要求在删除方法中执行此操作:
public class SynonymHandler {
public static String getSynonymLine(String[] synonymData, String word) {
int index = synonymLineIndex(synonymData, word);
return synonymData[index];
}
// removeSynonym accepts synonym data, and removes a given synonym for a given word.
public static void removeSynonym(String[] synonymData, String word, String synonym) {
int index = synonymLineIndex(synonymData, word);
String[] removedSynData = new String[synonymData.length];
for (int i = 0, int m = 0; i < synonymData.length; i++)
if (synonymData[index].contains(word))
removedSynData[m++] = synonymData[i];
}
}
这个问题的代码可以进行大量优化,但假设我们想要一个更容易理解的答案,这里有一些java代码用它的同义词替换单词,没有验证输入,所以如果使用空值将会失败:
public class SynonymHandler {
public static void main(String[] args) {
String[] synonymData = { "merciful", "gracious", "kindly", "forgiving" };
System.out.println("# original");
for (String element : synonymData) {
System.out.println(element);
}
String[] modified = removeSynonym(synonymData, "merciful", "gracious");
System.out.println("# modified");
for (String element : modified) {
System.out.println(element);
}
}
private static String[] removeSynonym(String[] synonymData, String word, String synonym) {
// result will have the same length as source:
String[] result = new String[synonymData.length];
// loop through the synonymData
for (int index = 0; index < synonymData.length; index++) {
// if word = synonymData[index] use synomyn, else use the original value
result[index] = word.equals(synonymData[index]) ? synonym : synonymData[index];
}
return result;
}
}