题解地址

https://leetcode.cn/problems/count-integers-with-even-digit-sum/solutions/2047123/by-yhm138_-w8co/ lc2180

代码

//点击指定元素
document.querySelector("#__next > div > div > div > div > div > div > div > div.shadow-level1.dark\\:shadow-dark-level1.flex.w-full.min-w-0.flex-col.rounded-xl.lc-lg\\:max-w-\\[700px\\].bg-layer-1.dark\\:bg-dark-layer-1 > div.relative.flex.w-full.flex-col > div.flex.w-full.flex-col.gap-4.px-5.pt-4.pb-8 > div.break-words > div > div > div > div.flex.select-none.bg-layer-2.dark\\:bg-dark-layer-2 > div:nth-child(13)").click();

golang

//我的问题是,Go支持函数式编程吗?

func countEven(num int) int {
a := makeRange(1, num)
evenCount := len(filter(a, func(num int) bool {
numStr := strconv.Itoa(num)
digits := strings.Split(numStr, "")
mySum:=0
for _,ele :=range digits{
d, _ := strconv.Atoi(ele)
mySum=mySum+d
}
return mySum%2 == 0
}))
return evenCount
} func filter(src []int, p func(int) bool) []int {
dst := []int{}
for _, s := range src {
if p(s) {
dst = append(dst, s)
}
}
return dst
} func makeRange(min, max int) []int {
a := make([]int, max-min+1)
for i := range a {
a[i] = min + i
}
return a
}

c++

//C++
class Solution {
public:
int countEven(int num) {
std::vector<int> range(num);
std::iota(range.begin(), range.end(), 1);
return std::count_if(range.begin(), range.end(), [](int x) {
std::string str = std::to_string(x);
return std::accumulate(str.begin(), str.end(), 0, [](int sum, char c) {
return sum + (c - '0');
}) % 2 == 0;
});
}
};

C#

//C#
using System;
using System.Linq; public class Solution {
public int CountEven(int num) {
return Enumerable.Range(1, num).Count(x => x.ToString().Select(c => c - '0').Sum() % 2 == 0);
}
}

ruby

# ruby

# @param {Integer} num
# @return {Integer}
def count_even(num)
(1..num).count { |x| x.to_s.chars.map(&:to_i).sum % 2 == 0 }
end

swift

//swift

class Solution {
func countEven(_ num: Int) -> Int {
return (1...num).filter { x in
x.description.map { Int(String($0))! }.reduce(0, +) % 2 == 0
}.count
}
}

kotlin

//kotlin

class Solution {
fun countEven(num: Int): Int {
return (1..num).count {
it.toString().toList().map { it.toInt() }.sum() % 2 == 0
}
}
}

rust

//rust

impl Solution {
pub fn count_even(num: i32) -> i32 {
(1..num+1).filter(|x| x.to_string().chars().map(|c| c.to_digit(10).unwrap()).sum::<u32>() % 2 == 0)
.count() as i32
}
}

php

//php

class Solution {

    /**
* @param Integer $num
* @return Integer
*/
function countEven($num) {
$result = array_filter(range(1, $num), function($x) {
$sum = 0;
foreach(str_split((string)$x) as $digit) {
$sum += intval($digit);
}
return $sum % 2 == 0;
});
return count($result);
} }

typescript

//typescript

function countEven(num: number): number {
return Array.from(Array(num).keys())
.map(x => x + 1)
.filter(x => x.toString()
.split('')
.map(Number)
.reduce((a, b) => a + b, 0) % 2 === 0)
.length;
}

racket

;racket

(define/contract (count-even num)
(-> exact-integer? exact-integer?)
(length
(filter (lambda (x)
(even? (apply + (map char->integer (string->list (number->string x))))))
(range 1 (add1 num))
)
)
)

dart

//dart

class Solution {
int countEven(int num) {
return Iterable.generate(num, (x) => x+1)
.where((x) =>
x.toString().split('').map(int.parse).reduce((a,b) => a+b) % 2 == 0
).length;
}
}

java

//java

import java.util.stream.IntStream;

public class Solution {
public static int countEven(int num) {
return (int) IntStream.range(1, num+1).filter(x ->
IntStream.range(0, String.valueOf(x).length())
.map(y -> Character.getNumericValue(String.valueOf(x).charAt(y)))
.sum() % 2 == 0
).count();
}
}

elixir

#elixir

defmodule Solution do
@spec count_even(num :: integer) :: integer
def count_even(num) do
(1..num)|>
Enum.count(fn x ->
x |> Integer.to_string() |> String.graphemes() |> Enum.map(&String.to_integer/1) |> Enum.sum() |> rem(2) == 0
end)
end
end

scala

//scala

object Solution {
def countEven(num: Int): Int = {
Range(1,num+1,1).count(x=>{
x.toString.toList.map(_.toInt).sum%2==0
});
}
}

erlang

%erlang

sum_digits(N) ->
sum_digits(N, 0). sum_digits(0, Sum) -> Sum;
sum_digits(N, Sum) ->
sum_digits(N div 10, Sum + N rem 10). -spec count_even(Num :: integer()) -> integer().
count_even(Num) ->
lists:foldl(fun(X, Acc) ->
Sum = sum_digits(X),
if Sum rem 2 == 0 ->
Acc + 1;
true ->
Acc
end
end,
0, [X || X <- lists:seq(1, Num)]).

性能

说实话你用上FP就别指望什么性能了。。。

Rust一如既往的优秀哈, 0 ms 2 MB

思路

如果要给{可读性,可维护性,代码长度,性能}排个序的话,应该是什么样的?

有些是拿适当的prompt问chatgpt写的。

有一些tips:

  • chatgpt是真的强,没人比chatgpt更懂FP     :-p

  • chatgpt分不清不同语言的Range/range是左闭右开还是左闭右闭。没事,人类也记不住。

  • elixir的时候,chatgpt给出的答案中,匿名函数fn没有和end配对。你如果知道基础的elixir语法那很好改。

  • 不知道也没事?直接拿你的代码附上报错问chatgpt。

correct the erlang code
sum_digits(N) ->
sum_digits(N, 0). sum_digits(0, Sum) -> Sum;
sum_digits(N, Sum) ->
sum_digits(N div 10, Sum + N rem 10). -spec count_even(Num :: integer()) -> integer().
count_even(Num) ->
lists:foldl(fun(X, Acc) ->
if sum_digits(X) rem 2 == 0 ->
Acc + 1;
true ->
Acc
end
end,
0, [X || X <- lists:seq(1, Num)]). Line 13: Char 24: call to local/imported function sum_digits/1 is illegal in guard
% 13| if sum_digits(X) rem 2 == 0 ->
% | ^

)

【LeetCode2180】[Go/C++/C#/Ruby/Swift/Kotlin/Rust/PHP/TS/Racket/Dart/Java/Elixir/Scala/Erlang] 统计各位数字之和为偶数的整数个数的更多相关文章

  1. 【转】Android世界的Swift - Kotlin语言

    最近Oracle又在和Google撕的厉害,才知道还有这么Kotlin在Android像Swift在Mac的地位一说. Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计 ...

  2. Android平台的Swift—Kotlin

    WeTest 导读 Kotlin 已经出来较长一段时间了,有些同学已经对Kotlin进行了深入的学习,甚至已经运用到了自己的项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,这篇文章的目 ...

  3. Swift语言中与C/C++和Java不同的语法(一)

    ---恢复内容开始--- Swift作为苹果官方推出的IOS开发的推荐语言,在过去的几年间受到了越来越广泛的关注,其实编程的人都知道,不同的编程语言大同小异,掌握一门新的语言关键是了解它与其它语言不同 ...

  4. Swift语言中与C/C++和Java不同的语法(二)

    这一部分,主要讲Swift中创新的可选型(optionals) 一.概要 可选型是Swift创新的一种新的类型,首先看一下可选型的应用场景: var errorCode : Int = 404 这时候 ...

  5. Swift语言中与C/C++和Java不同的语法(五)

    这一节将会提到Swift中其他的关于函数的应用,这些内容包括有: 默认参数值和可变参数值.常量参数.返回函数类型和函数嵌套: 一.默认参数值和可变参数值 对默认参数值是指在函数的声明中就已经定义了参数 ...

  6. Swift语言中与C/C++和Java不同的语法(四)

    这一节,我们将会讨论一下Swift中的函数相关的基本内容 首先是函数的创建: func sayHello (name:String) -> String { return "Hello ...

  7. Swift语言中与C/C++和Java不同的语法(三)

    这一部分的主要内容是Swift中的Collections 我们知道Java中的Collection基本上是每一个Java程序猿接触到的第一个重要的知识点. 在Swift中也不例外,Swift中的Col ...

  8. Java & Groovy & Scala & Kotlin - 20.Switch 与模式匹配

    Overview 本章主要介绍高级条件语句中的 switch 语句以及其增强版的模式匹配. Java 篇 Switch 特点 Java 中 switch 语句功能类似 if,但是 switch 主要用 ...

  9. gradle 混合编程java、scala、kotlin、groovy

    众所周知,java是基于JVM的开发语言,但能够在JVM上运行的开发语言不仅仅有java,目前还有很热门的kotlin(kotlin不仅仅只能开发Android).scala.groovy等等.目前国 ...

  10. [Swift]LeetCode129. 求根到叶子节点数字之和 | Sum Root to Leaf Numbers

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...

随机推荐

  1. git rebase之abort,continue,skip

    git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢 git rebase --skip 会将引起冲突的commit丢弃掉 git rebase --c ...

  2. Python 默认环境

    查看pip默认安装目录 python -m site 查看已安装 pip list installed 查看安装位置 pip show PyMySQL

  3. element的el-table合计显示不出来

    在updated中写入 this.$nextTick(() => { this.$refs["printStatisticsTableData"].doLayout(); } ...

  4. node中get和post接口

    接口传参 使用ajax请求向服务器接口传参,按http协议的约定,每个请求都有三个部分: 请求行: 保存了请求方式,地址,可以以查询字符串的格式附加一部分数据. 请求头:它可以附加很多信息,其中con ...

  5. Leetcode本地阅读器开发--01界面设计一

    返回项目声明及目录:Leetcode本地阅读器开发--总声明 整个界面设计如下:后续可能会不断优化和加入新功能 1.启动后界面 2.进行具体题目搜索 3.进行分类搜索 本节主要介绍程序界面的绘制: 1 ...

  6. defer和async区别

    浏览器会立即加载JS文件并执行指定的脚本,"立即"指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行 加上async属性,加载 ...

  7. win7下MongoDB安装配置

    之前看windows下安装MongoDB操作很是简单,今天在自己笔记本上安装一次,各种小问题.参照网上各大神帖子,再记录下个简单流程以便以后记得. 1.MongoDB官网上下载安装包 2.运行安装包, ...

  8. c++学习 4 运算符及其应用技巧

    一 按位与运算符 "&"按位与运算符,全1为1,有0则0. 特点:和1相与保持不变,和0相与都变为0. 功能:将指定位置清0. example: 1000 1100 &am ...

  9. 【APT】Bitter APT组织针对巴基斯坦航空综合部门攻击活动分析

    前言 蔓灵花(Bitter)是一个被广泛认为来自印度的APT组织,该组织长期针对我国及巴基斯坦的政府.军工.电力.核等部门发动网络攻击,窃取敏感数据,具有较强的政治背景.本次分享一个蔓灵花组织针对巴基 ...

  10. c++ 构造名字不足的0补齐

    stringstream ss; ss << setfill('0') << setw(10) << i; vstrImageFilenames[i] = strP ...