Rust: codewars 的Duplicate Encoder
题目如下:
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相关推荐
- 【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 ...
- Node.js 开发者的 Rust 入门指南
作者 | Florian GOTO 译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 随着WebAssembly的进步,如果你想在JavaScrip ...
- 这一天,我用 Rust 重写了已有 19 年历史的 C++ 库!
从版本 56 开始,Firefox 浏览器支持一种新的字符编码转换库,叫做 encoding_rs.它是用 Rust 编写的,代替了从 1999 年就开始使用的 C++ 编写的字符编码库 uconv. ...
- Rust模板引擎Tera中文英文对照官方文档
来嘞早不如来的巧,刚翻译好,你就来啦!翻译完成 要开发CMS(内容管理系统)得有个模板引擎,Tera是使用Rust编写的模板引擎,语法跟JinJa2很像. 引入Tera 要使用Tera只需要在 Car ...
- 【erlang】吃螃蟹 rust 开发 erlang nif 的正确方式 rustler
用rust编写erlang的nif方案,以下几个star比较高 Rustler ( https://github.com/hansihe/rustler ) 这个比较火,但是没有关于如何在 Erlan ...
- Rust Wasm 图片转 ASCII 艺术
有一些隐藏在代码中的 ASCII 有意思的图片,如: /*__ooOoo_o8888888o88" . "88(| -_- |)O\ = /O____/`---'\____.' \ ...
- Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)
原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...
- Rust和C / C ++的跨语言链接时间优化LTO
Rust和C / C ++的跨语言链接时间优化LTO 链接时间优化(LTO)是LLVM实施整个程序优化的方法.跨语言LTO是Rust编译器中的一项新功能,使LLVM的链接时间优化可以在混合的C / C ...
- 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玩rust_有趣的 Rust 类型系统: Trait
也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...
最新文章
- Python读写文件 - 转
- 在O(1)时间删除链表结点
- Python帮你识破双11的套路
- Dilated/Atrous conv 空洞卷积/多孔卷积
- leetcode74. 搜索二维矩阵 ,你见过吗
- (pytorch-深度学习系列)pytorch实现对Fashion-MNIST数据集进行图像分类
- C++中的引用与指针的区别
- Delphi 两种类的声明方法
- python教程-Python教程
- PHP中静态(static)调用非静态方法详解--调用!!!
- python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
- 博思得标签打印机驱动_博思得V6驱动|博思得Postek V6标签打印机驱动下载 官方版 - 比克尔下载...
- CreateProcess并隐藏窗口
- 移动端H5页面设计知识
- Centos6.7安装VBoxLinuxAdditions
- 2021Q2产品团队绩效总结--管理日记
- 拿到一份代码如何跑起来
- 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片
- MAC 安装windows
- java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试