Lintcode1499 · Reordered Power of 2 go

/**
1499 · Reordered Power of 2
Algorithms
Medium
Accepted Rate
62%

DescriptionSolutionNotesDiscussLeaderboard
Description
Starting with a positive integer N, we reorder the digits in any order (including the original order) such that the leading digit is not zero.
If we can get a power of 2 in the above way, we return true; otherwise, return false.

1 \leq N \leq 10^91≤N≤10
​9
​​

Example
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
Tags

https://blog.youkuaiyun.com/fuxuemingzhu/article/details/82468653
https://www.cnblogs.com/rubylouvre/p/12175524.html
https://blog.youkuaiyun.com/qq_28612967/article/details/98633126

https://www.lintcode.com/problem/1499/
*/

import (
	"fmt"
	"reflect"
)

/**
 * @param N:
 * @return: return true or false
 */
func reorderedPowerOf2 (N int) bool {
	// write your code here
	var c map[int]int = count(N)
	var i uint32 = 0
	for i = 0; i < 32; i++ {
		var c1 map[int]int = count(1 << i)
		if reflect.DeepEqual(c, c1) {
			return true
		}
	}
	return false
}

func count(N int) map[int]int {
	c := make(map[int]int)
	for i := 0; i <= 9; i++ {
		c[i] = 0
	}
	for {
		if N == 0 {
			break
		}
		c[N % 10] = c[N % 10] + 1
		N /= 10
	}
	return c
}

func main() {
	var r1 bool = reorderedPowerOf2(16)
	//true
	fmt.Println(r1)
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值