联合我的意思是:
let substring = "CNC";
和字符串:let s = "CNCNC";
在我的版本中,“jointed”意味着有 2
存在这样的子串。在
Rust
中这样做的最佳方法是什么? ?我能想到一些,但基本上很难看 C
.我有这样的事情:
fn find_a_string(s: &String, sub_string: &String) -> u32 {
s.matches(sub_string).count() as u32
}
但这会返回 1
, 因为 matches()
只发现脱节 substrings
.在 Rust 中做到这一点的最佳方法是什么?
最佳答案
可能有更好的算法。在这里,我只是在输入字符串上移动一个具有我们正在寻找的子字符串大小的窗口,并比较该窗口是否与子字符串相同。
fn main() {
let string = "aaaa";
let substring = "aa";
let substrings = string
.as_bytes()
.windows(substring.len())
.filter(|&w| w == substring.as_bytes())
.count();
println!("{}", substrings);
}
关于string - 如何查找子字符串在给定字符串中出现的次数(包括连接)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68969285/