[英]Letters having the same equivalence
尋找有關如何實現此目標的想法。 基本上,我希望某些字符具有等效性。
例如:M = N
所以:媽媽=修女
但是:Mum也可以等於Num。
建議我嘗試一張替換圖,直到第三個示例中所有M都不要更改為N為止,這才起作用。
謝謝
這是替換地圖的代碼:
HashMap<String,String> replacements = new HashMap<>();
replacements.put("n","m");
replacements.put("m","n");
String ignoreFirstChar = names[j].charAt(0) + (names[j].substring(1,names[j].length()).replaceAll("[^a-zA-Z]+", "").toLowerCase());
String result = "";
for(int i1 = 0; i1 < ignoreFirstChar.length(); i1++) {
String rpl = replacements.get(ignoreFirstChar.charAt(i1)+"");
result += rpl==null?ignoreFirstChar.charAt(i1):rpl;
}
System.out.println(ignoreFirstChar);
System.out.println(result);
我假設M和m不相等。 因此,如果M = N,則不能說M = n。 如果您想按照建議使用“替換圖”,我將使用它來規范化您的字符串。
您將面臨當前的問題
Given strings x and y, determine whether x equals y
並將其更改為
Given strings x and y, determine whether normalize(x) equals normalize(y)
規范化字符串的目的是應用您具有的所有等效規則,例如M =N。這樣,“ Mum”將被轉換為“ Num”,然后您可以比較兩個字符串而不必擔心規則因為它們已經被應用了。
normalize
方法看起來像
/*
* Takes each character in inStr and replaces them as necessary based on
* your replacement map. For example, if you see an "n", then replace it with "m"
*/
String normalize(String inStr) {
String newStr;
// something happens
return newStr;
}
如果區分大小寫不重要,則可以通過將字符串首先轉換為小寫或大寫來再次規范化字符串(沒關系,只要一致即可)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.