学Rust-实战leetcode(三)

作者:有好多问题2024.02.16 15:46浏览量:4

简介:本篇文章将介绍如何使用Rust语言解决LeetCode中的两个问题:Z字形排列和最长无重复字符子串。我们将通过示例和代码来详细解释这两个问题的解决方案,并探讨如何优化代码以提高性能。

在LeetCode中,有许多有趣的问题需要我们使用Rust来解决。本篇文章将介绍两个问题:Z字形排列和最长无重复字符子串。我们将通过示例和代码来详细解释这两个问题的解决方案,并探讨如何优化代码以提高性能。

一、Z字形排列

问题描述:给定一个字符串,将其按照Z字形排列,然后输出结果。例如,输入字符串为”LEETCODEISHIRING”,行数为3时,排列如下:L C I R E T O E S I I G E D H N,最后输出”LCIRETOESIIGEDHN”。

解题思路:我们可以使用一个二维数组来模拟Z字形排列的过程。首先,将字符串按照行数拆分成若干个子串,并将它们存储在二维数组中。然后,从上到下、从左到右遍历二维数组,按照Z字形排列的规律输出每个字符。

示例代码:

  1. fn convert(s: &str, num_rows: i32) -> String {
  2. let mut result = String::new();
  3. let mut rows = vec![&s[..]];
  4. for _ in 0..num_rows {
  5. let mut col = 0usize;
  6. for row in rows.iter().rev() {
  7. for c in row.chars() {
  8. result.push(c);
  9. if col == 0 {
  10. break;
  11. }
  12. col -= 1;
  13. }
  14. }
  15. col = 0;
  16. rows.push(&s[num_rows..]);
  17. }\n