LintCode阶梯训练1-1

来源:互联网 发布:java注解不属于 编辑:程序博客网 时间:2024/05/16 02:30

两个字符串是变位词

写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。
样例

给出 s = "abcd",t="dcab",返回 true.
给出 s = "ab", t = "ab", 返回 true.
给出 s = "ab", t = "ac", 返回 false.

1.自己的解法:
public boolean anagram(String s, String t) {
        // write your code here
        int[] index = new int[256];
        int s_len = s.length();
        int t_len = t.length();
        for (int i = 0; i < s_len; i++){
            index[s.charAt(i)]++;
        }
        for (int i = 0; i < t_len; i++){
            index[t.charAt(i)]--;
        }
        for (int i = 0; i < 256; i++){
            if (index[i] != 0){
                return false;
            }
        }
        return true;
    }
2.出现的问题:
没有首先排除两个字符串长度不一的情况。并且在保证二者长度相等时,但凡计数数组为负即返回false,可以将解法化简。
0 0
原创粉丝点击