leetcode刷题笔记——1281

烂漫一生 提交于 2019-12-22 20:04:13

leetcode力扣刷题笔记——1281

1281. 整数的各位积和之差

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

解题思路

把整数拆成数组,用两个循环分别计算出各位积和各位和,然后进行相减得到结果。至于如何拆分整数,有两个思路,一个是计算出整数的位数,然后循环用%10的方法去取每一位;另一个是将整数转为字符串,再转成字符数组,用range取值。

  1. 整数转字符串
func subtractProductAndSum(n int) int {
	nums := strconv.Itoa(n)
	var addition,time = 0,1
	for i,v := 0,0; i<len(nums); i++  {
		//Atoi有两个返回值,value和err
		v,_ = strconv.Atoi(nums[i:i+1])
		addition += v
		time *= v
	}
	return time-addition
}
  1. 取模
func subtractProductAndSum(n int) int {
	var addition,time,v = 0,1,0
	for i := 0;n!=0; {
		v = n/int(math.Pow(2, float64(i)))%10
		addition += v
		time *= v
		n = n/10
	}
	return time-addition
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!