题目
题目链接:
https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d
思路
直接模拟即可
Java代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean happynum (int n) {
//直接模拟即可
if (n == 1) return true;
Set<Integer> visited = new HashSet<>();
while (!visited.contains(n)) {
int next = 0;
visited.add(n);
while (n > 0) { //获得n每一位上的数字,并平方累加
int cur = n % 10;
next += cur * cur;
n = n / 10;
}
if (next == 1) return true;
if (visited.contains(next)) {
return false;
}
n = next;
}
return false;
}
}
Go代码
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
func happynum(n int) bool {
//直接模拟即可
if n == 1 {
return true
}
set := map[int]bool{}
_, ok := set[n]
for !ok {
set[n] = true
next := 0
for n > 0 { //获得n上的每一位数并累加
cur := n % 10
next += cur * cur
n = n / 10
}
if next == 1 {
return true
}
_, ok1 := set[next]
if ok1 {
return false
}
n = next
}
return false
}
PHP代码
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
function happynum( $n )
{
//直接模拟即可
if($n ==1) return true;
$set = [];
while (true){
$set[$n] = 1;
$next = 0;
while ($n>0){ //获取n上每一位数并累加
$cur = $n%10;
$next+=$cur*$cur;
$n = intval($n/10);
}
if($next ==1) return true;
if(isset($set[$next])) break;
$n = $next;
}
return false;
}