作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 GoLang 的新手。所以我每天都在做 leetcode 问题,其中一个是减去一个整数的乘积和数字总和。为此,我最初考虑将整数拆分为单个数字,然后将所有数字相加/相乘以获得输出。但是无法做到这一点,因为我目前还没有充分理解类型转换。经过多次试验和错误,我放弃了这种方法,并使用除法和模数来获得最后的数字并获得输出。这是我所做的:
func subtractProductAndSum(n int) int {
sum, prod := 0, 1
for {
if n < 10 {
sum += n
prod *= n
break
}
sum += n % 10
prod *= n % 10
n = n / 10
}
return prod - sum
}
这有效,但在其他答案中,我发现了一个有效的方法,基于我的第一种方法(拆分和征服),它是:
func subtractProductAndSum(n int) int {
p := 1
s := 0
strN := strconv.Itoa(n)
for _, val := range strN {
intVal := int(val - '0')
p = p * intVal
s = s + intVal
}
return p - s
}
在这种方法中我无法理解
intVal := int(val - '0')
.它肯定会得到所需的输出。我想
val
正在被类型转换为
int
但我无法理解什么是
- '0'
帮助。
最佳答案
您的 strN
包含与 n
相同的字符串值. val
for loop
中的变量是 character
类型数据不是 int
数字,它绝对不是被类型转换为 int
.
变量 val
可能包含以下任何字符 {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
.
所以,如果你减去 '0'
从任何一个数字字符,你会得到 '0'
之间的差异还有那个digit
这实际上是 int
您正在寻找的值(value)。
减法基本上是ASCII
之间的差值两个字符的值。
例如,如果减去 '0'
来自 '5'
, 你会得到 5
这是整数值。ASCII
'5'
的值和 '0'
是 53
和 48
.所以,'5' - '0'
实际上是 53 - 48
哪个是 5
.
这就是代码中类型转换的工作原理。
关于go - 拆分 int 以分隔数字以便遍历每个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63738929/
我是一名优秀的程序员,十分优秀!