编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 true ;不是,则返回 false 。
示例 1:
输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1
示例 2:
输入:n = 2输出:false
提示:
1 <= n <= 231 - 1
class Solution {public:bool isHappy(int n) {set<int> s; //存储循环中出现过的数while (1){int sum0=nsum(n);if(sum0==1) return true;//循环中出现过这个数if(s.find(sum0)!=s.end()) return false;s.insert(sum0);n=sum0;}}int nsum(int m){int sum=0;while (m!=0){sum+=(m%10)*(m%10);m/=10;}return sum;}};
