public class Solution {
private int SumSqares(int n)
{
//将一个数字的各个数位的值分开存储
var list = new List<int>();
do
{
var x = n % ;
list.Add(x);
n = n / ;
} while (n != ); var sum = ; foreach (var l in list)
{
sum += l * l;
}
return sum;
} public bool IsHappy(int n)
{
var list = new List<int>();//已经计算出来的值,用于判断是否出现循环 while (n != && !list.Contains(n))
{
list.Add(n);
n = SumSqares(n);
} if (n == )
{
return true;
}
else
{
return false;
}
}
}

https://leetcode.com/problems/happy-number/#/description

补充一个python的实现:

 class Solution:
def isHappy(self, n: int) -> bool:
s = set([n])
while n != :
sn = str(n)
sums =
for i in range(len(sn)):
sums += int(sn[i]) **
if sums in s:
return False
s.add(sums)
n = sums
return True

使用集合s记录已经出现过的数字:

如果出现数字1,则返回True;

如果在出现重复的数字之前都没有出现过1,则返回False。

05-11 18:13