跳到主要内容

2697.字典序最小回文串

链接:2697.字典序最小回文串
难度:Easy
标签:贪心、双指针、字符串
简介:返回最终的回文字符串。

题解 1 - python

  • 编辑时间:2023-12-13
  • 执行用时:148ms
  • 内存消耗:16.23MB
  • 编程语言:python
  • 解法介绍:遍历。
class Solution:
def makeSmallestPalindrome(self, s: str) -> str:
arr = list(s)
for i in range(len(arr) // 2):
arr[i] = arr[len(arr) - 1 - i]= min(arr[i], arr[len(arr) - 1 - i])
return ''.join(arr)

题解 2 - cpp

  • 编辑时间:2023-12-13
  • 执行用时:32ms
  • 内存消耗:15.03MB
  • 编程语言:cpp
  • 解法介绍:同上。
class Solution {
public:
string makeSmallestPalindrome(string s) {
for (int i = 0; i < s.size() / 2; i++) {
s[i] = s[s.size() - 1 - i] = min(s[i], s[s.size() - 1 - i]);
}
return s;
}
};

题解 3 - rust

  • 编辑时间:2023-12-13
  • 执行用时:8ms
  • 内存消耗:2.35MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn make_smallest_palindrome(s: String) -> String {
let mut arr = s.chars().map(|c| c as u8).collect::<Vec<u8>>();
let n = arr.len();
for i in 0..n / 2 {
arr[i] = arr[i].min(arr[n - 1 - i]);
arr[n - 1 - i] = arr[i];
}
String::from_utf8(arr).unwrap()
}
}