检查加扰字符串的字符是否与第二个字符串

时间:2015-05-18 21:54:10

标签: java

方法stringScramble()接受两个Strings,其中一个代表scrambled String(例如rkqodlw),第二个代表实际字(例如{{1}如果world可以重新排列以匹配第二个true,则返回scrambled String 例如,当我输入:

String

然后程序正在给我Enter two Strings: ellho hello false 而不是false,因为true可以重新排列为ellho

hello

1 个答案:

答案 0 :(得分:0)

内部循环检查第一个字符串的字符i是否等于第二个字符串的字符j,如果是,则将其附加到temp字符串。这应该适用于具有唯一字符的字符串,但如果您将ellhohello进行比较,则会遇到l s相等的四种情况,这不是预期的行为。

由于订单在您的比较中并不重要,您可以只计算每个字符在每个字符串中出现的次数并进行比较。 E.g:

public static Map<Character, Integer> charCount (String s) {
    Map<Character, Integer> result = new HashMap<>();
    for (int i = 0; i < s.length(); ++i) {
        Character c = s.charAt(i);
        Integer cnt = result.get(c);
        if (cnt == null) {
            cnt = 1;
        } else {
            cnt = cnt + 1;
        }
        result.put (c, cnt);
    }
    return result; 
}

public static boolean stringScramble(String myString1, String myString2)
    return charCount(myString1).equals(charCount(myString2));
}