keep learning, keep coding!
Problem - Happy Number
Write an algorithm to determine if a number n is happy.
A happy number is a number defined by the following process:
Starting with any positive integer, replace the number by the sum of the squares of its digits.
Repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
Those numbers for which this process ends in 1 are happy.
Return true if n is a happy number, and false if not.
翻譯蒟蒻
給定一個數字,每位數平方後相加,大於 1 則重複每位數開平方相加的動作,如果最後得到 1 的話,就是happy number,如果進入無限迴圈,這個數就不是 happy number。
Example 1:
1
2
3
4
5
6
7Input: n = 19
Output: true
Explanation:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1Example 2:
1
2Input: n = 2
Output: false
Solution - JavaScript
1 | /** |
Solution - Ruby
Solution 1:
1 | def is_happy(n) |
Solution 2:
1 | def is_happy(n) |
為了避免無限循環,函數提前處理了一些特殊情況:如果 n 小於等於 0,返回 false;如果 n 等於 1,返回 true;如果 n 等於 4,返回 false。
使用 (n % 10) 獲取最後一位數字,計算其平方加到 sum 中,然後將 n 除以 10 去掉最後一位。這樣迭代直到 n 變成 0,然後遞迴調用 is_happy 函數檢查新的數字。
Solution - PHP
1 | function isHappy($n) { |
PHP 方法筆記
intval
是一個用來取得變數的整數值的函數。函數的基本語法如下:
1
2
3
4intval(mixed $var, int $base = 10): int
// `$var` 是要轉換的變數。
// `$base` 是轉換使用的進位制數(預設是 10)。- return 值:
- 將輸入轉換為整數。
- 如果 $var 是浮點數,它會被截斷為整數。如果 $var 是字串,會嘗試從字串中讀取整數,並忽略開頭的非數字字符。
1
2
3
4
5
6
7
8
9
10
11$number = 123.45;
$result = intval($number);
echo $result; // 輸出: 123
$stringNumber = "456abc";
$resultFromString = intval($stringNumber);
echo $resultFromString; // 輸出: 456
$hexNumber = "1a";
$resultHex = intval($hexNumber, 16);
echo $resultHex; // 輸出: 26- return 值: