最高赞的解法果然牛逼
class Solution {
public int numberOf1Between1AndN_Solution(int n) {
return IntStream
.iterate(1, x -> x * 10)
.limit(String.valueOf(n).length())
.map(x -> (n / x + 8) / 10 * x + ((n / x) % 10 == 1 ? n % x + 1 : 0))
.sum();
}
}
暴力写法 最后一个数据直接过不了:
class Solution {
public int numberOf1Between1AndN_Solution(int n) {
return IntStream
.rangeClosed(1, n)
.mapToObj(String::valueOf)
.mapToInt(x -> (int) IntStream
.range(0, x.length())
.map(x::charAt)
.filter(val -> val == '1')
.count())
.sum();
}
}
似乎不建议发这种别人的代码/非AC的代码作为题解、、、