[Swift]LeetCode231. 2的幂 | Power of Two
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9748094.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given an integer, write a function to determine if it is a power of two.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1 输出: true 解释: 20 = 1
示例 2:
输入: 16 输出: true 解释: 24 = 16
示例 3:
输入: 218 输出: false
12ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 for i in 0..<32 { 4 if n == 1 << i { 5 return true 6 } 7 } 8 9 return false 10 } 11 }
12ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 if n <= 0 { return false } 4 if n == 1 { return true } 5 var current = n 6 while current > 2 { 7 if current % 2 != 0 { 8 return false 9 } else { 10 current = current / 2 11 } 12 } 13 return true 14 } 15 }
16ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 guard n > 0 else { return false } 4 return String(n, radix: 2).filter { $0 == "1" }.count == 1 5 } 6 }
20ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 if (n <= 0) { 4 return false 5 } 6 var rencontre = false 7 for digit in String(n, radix: 2) { 8 if (digit == "1") { 9 if rencontre { 10 return false 11 } else { 12 rencontre = true 13 } 14 } 15 } 16 17 return true 18 } 19 }
20ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 4 guard n > 0 else { 5 return false 6 } 7 8 var num = n 9 10 while num != 0 { 11 12 if num == 1 || num == 2 { 13 return true 14 } 15 16 if num % 2 != 0 { 17 return false 18 } 19 20 num /= 2 21 } 22 23 return true 24 25 } 26 }
24ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 if (n == 0) { 4 return false; 5 } 6 return n & (n-1) == 0 7 } 8 }
32ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 var number:Int = n; 4 if number != 0 && number > 0 { 5 if number == 1 || number == 2{ 6 return true; 7 } 8 while (number%2 == 0) { 9 if (number == 2) { 10 break; 11 } 12 number = number / 2; 13 } 14 if (number % 2 == 0) { 15 return true; 16 } 17 } 18 return false; 19 } 20 }
48ms
1 class Solution { 2 func isPowerOfTwo(_ n: Int) -> Bool { 3 if n <= 0 { 4 return false 5 } 6 return 1<<32 % n == 0 7 } 8 }