题目如下:

https://www.codewars.com/kata/duplicate-encoder/rust

Examples:

“din” => “(((“

“recede” => “()()()”

“Success” => “)())())”

“(( @” => “))((“

简单来说:
(1)对于其中字符出现次数>1的,字符变成“)”,否则为“(”;
(2)不区分大小写。

一、我的解法

fn duplicate_encode(word:&str)->String {let mut strs ="".to_string();let chars= word.to_lowercase().chars().into_iter().collect::<Vec<char>>();(&chars).into_iter().map(|&x| {match (&chars).into_iter().filter(|&s|*s==x).count()>1usize{true=> strs.push(')'),false =>strs.push('('),}}).collect::<Vec<_>>();strs
}

二、精彩的解法

1、

fn duplicate_encode(word:&str)->String {let lower = String::from(word).to_lowercase();lower.chars().map(|c| if lower.find(c) == lower.rfind(c) { '(' } else { ')' }).collect()
}

2、

fn duplicate_encode(word:&str)->String {let mut res = String::from("");for (i,c) in word.to_lowercase().chars().enumerate() {res.push(if word.to_lowercase().chars().filter(|&x| x==c).count() > 1 { ')' } else { '(' });}res
}

3、

use std::collections::HashMap;fn duplicate_encode(word: &str) -> String {let word = word.to_uppercase();let mut char_map = HashMap::new();for ch in word.chars() {let count = char_map.entry(ch).or_insert(0);*count += 1;}word.chars().map(|ch| if *char_map.get(&ch).unwrap()  > 1 { ')' } else { '(' }).collect()
}

4、

Rust: codewars 的Duplicate Encoder相关推荐

  1. 【MP4 QuickTime隐写】tcsteg、jpegEOFx、detect anomalies in video files

    目录 一.TCSteg 1.1.简介: 1.2.现状: 1.3.原理: 1.4.检测: 二.脚本(源代码) 2.1.tcsteg2.py: 2.2.jpegEOFx.py 2.3.detect ano ...

  2. Node.js 开发者的 Rust 入门指南

    作者 | Florian GOTO 译者 | 弯月    责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 随着WebAssembly的进步,如果你想在JavaScrip ...

  3. 这一天,我用 Rust 重写了已有 19 年历史的 C++ 库!

    从版本 56 开始,Firefox 浏览器支持一种新的字符编码转换库,叫做 encoding_rs.它是用 Rust 编写的,代替了从 1999 年就开始使用的 C++ 编写的字符编码库 uconv. ...

  4. Rust模板引擎Tera中文英文对照官方文档

    来嘞早不如来的巧,刚翻译好,你就来啦!翻译完成 要开发CMS(内容管理系统)得有个模板引擎,Tera是使用Rust编写的模板引擎,语法跟JinJa2很像. 引入Tera 要使用Tera只需要在 Car ...

  5. 【erlang】吃螃蟹 rust 开发 erlang nif 的正确方式 rustler

    用rust编写erlang的nif方案,以下几个star比较高 Rustler ( https://github.com/hansihe/rustler ) 这个比较火,但是没有关于如何在 Erlan ...

  6. Rust Wasm 图片转 ASCII 艺术

    有一些隐藏在代码中的 ASCII 有意思的图片,如: /*__ooOoo_o8888888o88" . "88(| -_- |)O\ = /O____/`---'\____.' \ ...

  7. Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)

    原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...

  8. Rust和C / C ++的跨语言链接时间优化LTO

    Rust和C / C ++的跨语言链接时间优化LTO 链接时间优化(LTO)是LLVM实施整个程序优化的方法.跨语言LTO是Rust编译器中的一项新功能,使LLVM的链接时间优化可以在混合的C / C ...

  9. H.265 HD 和H.265 4K Video Encoder IP Core

    H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...

  10. 10玩rust_有趣的 Rust 类型系统: Trait

    也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...

最新文章

  1. Python读写文件 - 转
  2. 在O(1)时间删除链表结点
  3. Python帮你识破双11的套路
  4. Dilated/Atrous conv 空洞卷积/多孔卷积
  5. leetcode74. 搜索二维矩阵 ,你见过吗
  6. (pytorch-深度学习系列)pytorch实现对Fashion-MNIST数据集进行图像分类
  7. C++中的引用与指针的区别
  8. Delphi 两种类的声明方法
  9. python教程-Python教程
  10. PHP中静态(static)调用非静态方法详解--调用!!!
  11. python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
  12. 博思得标签打印机驱动_博思得V6驱动|博思得Postek V6标签打印机驱动下载 官方版 - 比克尔下载...
  13. CreateProcess并隐藏窗口
  14. 移动端H5页面设计知识
  15. Centos6.7安装VBoxLinuxAdditions
  16. 2021Q2产品团队绩效总结--管理日记
  17. 拿到一份代码如何跑起来
  18. 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片
  19. MAC 安装windows
  20. java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试

热门文章

  1. vSphere与Workstation虚拟机交互的几种方法(四)
  2. C#基础知识四之override和new的区别
  3. 新手降NAT网络第十步曲,小编提供思路。
  4. 完整版linux下android源码下载、编译、模拟器启动运行
  5. APUE学习笔记——信号
  6. Struts2MVC底层的简单实现
  7. java入门第五步之数据库项目实战
  8. linux命令补遗 - 1
  9. Mybatis-学习笔记(2)Mybatis配置文件
  10. 【LOJ】#2062. 「HAOI2016」地图