Hi,大家好,这里是炼手Rust专栏,我是xiaoK,今天来看一个小问题:字符串窗口。
提问
给定一个字符串,按出现的顺序输出该字符串中长度为 n 的所有连续子串。
例:
input:49142,3
output:[491,914,142]
input:49142,4
output:[4914,9142]
input:49142,6
output:[]
模板:
pub fn series(digits: &str, len: usize) -> Vec<String> {
}
分析
很简单,如果输入的长度大于本身字符串的长度,那么就返回空序列;如果小于字符串长度,就从左边开始遍历,每次取长度为 n 的子字符串,总共取字符串长度减去 n-1 次。
解决方案
pub fn series(digits: &str, len: usize) -> Vec<String> {
let mut windows = vec![];
if len <= digits.len() {
let times = digits.len() - len;
for i in 0..=times {
windows.push((&digits[i..(i+len)]).to_string());
}
}
windows
}
Trick
len()方法可以获取字符串长度。&str类型通过to_string方法把自己变成String类型。