码迷,mamicode.com
首页 > 其他好文 > 详细

Two Strings Are Anagrams

时间:2015-12-01 14:39:54      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

public class Solution {
    /**
     * @param s: The first string
     * @param b: The second string
     * @return true or false
     */
    public boolean anagram(String s, String t) {
        // write your code here
        int lens = s.length();
        int lent = t.length();
        
        if (lens != lent){
            return false;
        } else {
            int[] base = new int[256];
            for (char c : s.toCharArray()){
                base[c]++;
            }
            
            for (char c : t.toCharArray()){
                base[c]--;
                if (base[c] < 0){
                    return false;
                }
            }
            return true;
        }
    }
};

这道题很简单但很巧妙,不能直接用hash table的原因是一个string可能是abbc,另一个是aabc,虽然字母一样,但是字母出现的顺序不一样。而这种方法是用ASCII Table先创建一个长度为256的int array,然后用第一个string的每一个char做标准,把每个字母出现的个数存在array里。第二个string把出现的字母个数从第个array里剪掉。只要有小于0的,就说明字母一定不完全一样。不需要考虑大于0的情况是因为两个string长度相等,只要有大于0的,就说明第一个string有一个字母出现的次数比第二个多,第二个必然有另一个字母出现的次数比第一个多。这样长度才能相等。

小问题:

string变char array -> .toCharArray();

int array initialization -> int[] intArray = new int[256]

Two Strings Are Anagrams

标签:

原文地址:http://www.cnblogs.com/codingEskimo/p/5009886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!