字母具有相同的等价物

时间:2014-01-15 17:22:59

标签: java

了解如何实现这一目标的想法。基本上我希望某些角色具有等价性。

例如:M = N

所以:妈妈= Nun

但是:妈妈也可以等于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);

1 个答案:

答案 0 :(得分:0)

我认为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.那样“妈妈”会被转换为“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;
}

如果区分大小写不重要,那么您可以通过首先将它们转换为小写或大写来重新规范化字符串(无关紧要,只要它是一致的)