跳到主要内容

899.有序队列

链接:899.有序队列
难度:Hard
标签:数学、字符串、排序
简介:给定一个字符串 s 和一个整数 k 。你可以从 s 的前 k 个字母中选择一个,并把它加到字符串的末尾。 。

题解 1 - rust

  • 编辑时间:2022-08-03
  • 内存消耗:2.3MB
  • 编程语言:rust
  • 解法介绍:如果 k 大于 1,说明可以任意调换顺序,如果 k 等于 1 说明只能把头部放入尾部。
use std::cmp::Ordering;
use std::collections::VecDeque;
impl Solution {
pub fn orderly_queue(s: String, k: i32) -> String {
if k == 1 {
let mut s = s.chars().collect::<VecDeque<char>>();
let mut ans = s.clone();
let mut temp = s.clone();
for i in 0..s.len() {
temp.pop_front();
temp.push_back(s[i]);
if ans.cmp(&temp) == Ordering::Greater {
ans = temp.clone();
}
}
ans.into_iter().collect()
} else {
let mut s = s.chars().collect::<Vec<char>>();
s.sort();
s.into_iter().collect()
}
}
}