题目
题目链接:
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] = truenext := 0for n > 0 { //获得n上的每一位数并累加cur := n % 10next += cur * curn = 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;
}