1417.重新格式化字符串
This commit is contained in:
parent
bf3fadba8e
commit
27ccef7e85
|
@ -198,6 +198,7 @@ mod q1403;
|
|||
mod q1404;
|
||||
mod q1408;
|
||||
mod q1413;
|
||||
mod q1417;
|
||||
mod q1447;
|
||||
mod q1473;
|
||||
mod q1480;
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
use crate::Solution;
|
||||
|
||||
impl Solution {
|
||||
/// [1417.重新格式化字符串](https://leetcode.cn/problems/reformat-the-string/)
|
||||
///
|
||||
/// 2022-08-11 09:28:23
|
||||
///
|
||||
/// 给你一个混合了数字和字母的字符串 `s`,其中的字母均为小写英文字母。
|
||||
///
|
||||
/// 请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同。也就是说,字母后面应该跟着数字,而数字后面应该跟着字母。
|
||||
///
|
||||
/// 请你返回 **重新格式化后** 的字符串;如果无法按要求重新格式化,则返回一个 **空字符串** 。
|
||||
///
|
||||
/// + **示例 1:**
|
||||
/// + **输入:** s = "a0b1c2"
|
||||
/// + **输出:** "0a1b2c"
|
||||
/// + **解释:** "0a1b2c" 中任意两个相邻字符的类型都不同。 "a0b1c2", "0a1b2c", "0c2a1b" 也是满足题目要求的答案。
|
||||
/// + **示例 2:**
|
||||
/// + **输入:** s = "leetcode"
|
||||
/// + **输出:** ""
|
||||
/// + **解释:** "leetcode" 中只有字母,所以无法满足重新格式化的条件。
|
||||
/// + **示例 3:**
|
||||
/// + **输入:** s = "1229857369"
|
||||
/// + **输出:** ""
|
||||
/// + **解释:** "1229857369" 中只有数字,所以无法满足重新格式化的条件。
|
||||
/// + **示例 4:**
|
||||
/// + **输入:** s = "covid2019"
|
||||
/// + **输出:** "c2o0v1i9d"
|
||||
/// + **示例 5:**
|
||||
/// + **输入:** s = "ab123"
|
||||
/// + **输出:** "1a2b3"
|
||||
/// + **提示:**
|
||||
/// * `1 <= s.length <= 500`
|
||||
/// * `s` 仅由小写英文字母和/或数字组成。
|
||||
/// + Related Topics
|
||||
/// * 字符串
|
||||
pub fn reformat(s: String) -> String {
|
||||
let (mut p1, mut p2): (Vec<_>, Vec<_>) = s.into_bytes().into_iter().partition(|b| b.is_ascii_digit());
|
||||
if p1.len() < p2.len() {
|
||||
std::mem::swap(&mut p1, &mut p2);
|
||||
}
|
||||
match p1.len() - p2.len() {
|
||||
0 | 1 => String::from_utf8((0..p1.len()).map(|i| if i < p2.len() { vec![p1[i], p2[i]] } else { vec![p1[i]] }).flatten().collect::<Vec<u8>>()).unwrap(),
|
||||
_ => "".to_owned()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::Solution;
|
||||
|
||||
#[test]
|
||||
fn test_q1417() {
|
||||
println!("{}", Solution::reformat("covid2019".to_owned()));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue