Rust: codewars 的Duplicate Encoder
2017-09-30 12:52
483 查看
题目如下:
https://www.codewars.com/kata/duplicate-encoder/rust
Examples:
“din” => “(((“
“recede” => “()()()”
“Success” => “)())())”
“(( @” => “))((“
简单来说:
(1)对于其中字符出现次数>1的,字符变成“)”,否则为“(”;
(2)不区分大小写。
一、我的解法
二、精彩的解法
1、
2、
3、
4、
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的Roman Numerals Encoder
- 【Codewars】Roman Numerals Encoder 正整数转罗马数字
- Rust: codewars的prize draw算法
- Rust: codewars的primes-in-numbers
- Rust : codewars的Sum of Pairs
- Rust: codewars的Sum by Factors
- Rust: codewars的Simple Substitution Cipher Helper算法题、N种不简单的解法集
- Rust: codewars的DNA to RNA Conversion
- Rust: codewars的Highest and Lowest
- [Codewars]-Roman Numerals Encoder
- Rust : codewars的up AND down 算法
- 【codewars】Roman Numerals Encoder
- Rust: codewars的Bleatrix Trotter
- Rust : codewars的Product of consecutive Fib numbers
- Rust: codewars的Molecule to atoms
- Rust: codewars 的Count of positives / sum of negatives
- android studio报错DuplicateFileException: Duplicate files copied in APK META-INF/NOTICE.txt
- H26L encoder.cfg参数分析
- lintcode-easy-Remove Duplicates from Sorted Array
- CVTRES : fatal error CVT1100: duplicate resource -- type:MANIFEST, name:1, language:0x0409