Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[Swift]LeetCode869. 重新排序得到 2 的幂 | Reordered Power of 2大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

StarTing with a positive IntegeN,we reorder the digits in any order (including the original order) such that the leading digit is not zero.

Return true if and only if we can do this in a way such that the resulTing number is a power of 2. 

Example 1:

Input: 1
Output: true 

Example 2:

Input: 10
Output: false 

Example 3:

Input: 16
Output: true 

Example 4:

Input: 24
Output: false 

Example 5:

Input: 46
Output: true 

Note:

@H_616_59@
  • 1 <= N <= 10^9
  • 从正整数 N 开始,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。

    如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。 

    示例 1:

    输入:1
    输出:true
    

    示例 2:

    输入:10
    输出false
    

    示例 3:

    输入:16
    输出:true
    

    示例 4:

    输入:24
    输出false
    

    示例 5:

    输入:46
    输出:true 

    提示

    @H_616_59@
  • 1 <= N <= 10^9
  • Runtime: 8 ms
    Memory Usage: 18.6 MB
     1 class Solution {
     2     func reorderedPowerOf2(_ N: int) -> Bool {
     3         var c:Int = counter(N)
     4         for i in 0..<32
     5         {
     6             if counter(1 << i) == c
     7             {
     8                 return true
     9             }
    10         }
    11         return false
    12     }
    13 
    14     func counter(_ N:int) ->Int
    15     {
    16         var N = N
    17         var res:Int = 0
    18         while(N > 0)
    19         {
    20             res += Int(pow(10,Double(N % 10)))
    21             N /= 10
    22         }
    23         return res
    24     }
    25 }

    12ms

     1 class Solution {
     2     func reorderedPowerOf2(_ N: int) -> Bool {
     3          let a = count(N);
     4         for i in 0...31 {
     5             if a.elementsEqual(count(1 << i)) {
     6                 return true;
     7             }
     8         }
     9       return false;
    10 }
    11     
    12     func count(_ N: int) -> [Int] {
    13         var n = N
    14         var ans =  [Int](repeaTing: 0,count: 31)
    15         while (n > 0) {
    16             let indx = n % 10;
    17             ans[indx] = ans[indx] + 1;
    18             n /= 10;
    19         }
    20         return ans
    21     }
    22 }

    16ms

     1 class Solution {
     2 
     3     let pows2 = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912]
     4     var DictArr = [Int: [[Character: Int]]]()
     5 
     6     init() {
     7         for n in pows2 {
     8             let s = String(n)
     9             let val = toStringDict(n)
    10             if let arr = DictArr[s.count] {
    11                 var varArr = arr
    12                 varArr.append(val)
    13                 DictArr[s.count] = varArr
    14             } else {
    15                 DictArr[s.count] = [val]
    16             }
    17         }
    18     }
    19 
    20     func reorderedPowerOf2(_ N: int) -> Bool {
    21         return DictArr[String(N).count]?.contains(toStringDict(N)) ?? false
    22     }
    23 
    24     func toStringDict(_ n: int) -> [Character : Int] {
    25         let s = String(n)
    26         var Dict: [Character : Int] = [:]
    27         for char in s.characters {
    28             if let val = Dict[char] {
    29                 Dict[char] = val + 1
    30             } else {
    31                 Dict[char] = 1
    32             }
    33         }
    34         return Dict
    35     }
    36 }

    28ms

     1 class Solution {
     2     func reorderedPowerOf2(_ N: int) -> Bool {
     3     if N == 1 {return true}
     4     var set = [String]()
     5     let stirng = String("\(N)".sorted(by: >))
     6     let max = Int(stirng)!
     7     for i in 1... {
     8         let number = 1 << i
     9         if number > max {break}
    10         set.append(String("\(number)".sorted(by: >)))
    11     }
    12      return set.contains(stirng)
    13     }
    14 }

    大佬总结

    以上是大佬教程为你收集整理的[Swift]LeetCode869. 重新排序得到 2 的幂 | Reordered Power of 2全部内容,希望文章能够帮你解决[Swift]LeetCode869. 重新排序得到 2 的幂 | Reordered Power of 2所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。