Happy Number

/*
    题意:判断一个数是不是happy数(用这个数每一位的平方的和代替这个数,
    不断重复这个过程,如果最后这个数是1,那么这个数就是happy数)
    解法:用map容器映射一下,判断当前数是否在前面出现过,如果出现过那么
    这个数就不是happy数,不过这样子的空间复杂度太高
*/
class Solution {
public:
    bool isHappy(int n) {
        map<long,bool>m;
        m.clear();
        long ans = (long)n;
        while(ans!=1){
            long cur = ans;ans = 0;
            while(cur){
                ans +=(cur%10)*(cur%10);
                cur/=10;
            }
            if(m[ans]) return false;
            m[ans] = 1;
        }
        return true;
    }
};

 

posted @ 2015-04-23 20:44  SprayT  阅读(115)  评论(0编辑  收藏  举报