有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java这个CTCI的字符串置换解决方案正确吗?

这似乎有效,我找不到其他人有类似的答案。这很简单,我对此表示怀疑

public static boolean permutation(String s, String t) {
    if (s.length() != t.length()) return false; // Permutations must be same length

    int sum = 0;

    for(char c : s.toCharArray())
        sum += c - 'a';

    for(char c : t.toCharArray())
        sum -= c - 'a';

    return sum == 0;
}

同时,时间复杂度是O(n),空间复杂度是O(1),对吗


共 (1) 个答案

  1. # 1 楼答案

    不,你不应该因为总和而做出决定,因为如果你尝试这个permutation("CTCI", "CCCZ")会因为相同的总和而得到true

    如果你想在O(N)中找到一个算法,你可以检查这个

       public static boolean permutation(String s, String t) {
            if (s.length() != t.length())
                return false;
    
            int[] freq = new int[26];
    
            for (int i = 0; i < s.length(); i++) {
                freq[s.charAt(i) % 26]++;
                freq[t.charAt(i) % 26] ;
            }
    
            for (int i = 0; i < freq.length; i++) {
                if (freq[i] != 0)
                    return false;
            }
    
            return true;
        }