给定两个字符串s和t,编写一个函数来检测t是否是s的字母异位词。
示例
示例1
输入:s = "anagram",t = "nagaram"
输出:true
示例2
输入:s = "rat",t = "car"
输出:false
注意事项
你可以假设字符串只包含小写字母。
在Rust中,我们可以使用sort()函数来解决这个问题。这个函数会按照字母的ASCII值对字符串中的字符进行排序,然后我们只需要比较排序后的两个字符串是否相等即可。
下面是一个示例代码:
fn is_anagram(s: &str, t: &str) -> bool {
// 忽略大小写
let s = s.to_lowercase();
let t = t.to_lowercase();
// 如果字符串长度不一致,那么它们肯定不是字母异位词
if s.len() != t.len() {
return false;
}
// 对字符串进行排序
let sorted_s = s.chars().sorted().collect::<String>();
let sorted_t = t.chars().sorted().collect::<String>();
// 比较排序后的字符串是否相等
sorted_s == sorted_t
}
fn main() {
println!("{0}, {1} -> {}", is_anagram("anagram", "nagaram"), "true"); // true
println!("{0}, {1} -> {}", is_anagram("rat", "car"), "false"); // false
}
代码解释:
- to_lowercase()函数将字符串转换为小写,这样我们就可以忽略大小写的影响。
- chars()函数将字符串转换为字符迭代器,这样我们就可以对每个字符进行排序。
- sorted()函数对字符进行排序,然后我们使用collect::<String>()将排序后的字符重新组合成一个新的字符串。
- 最后,我们比较两个排序后的字符串是否相等,如果相等,则它们是字母异位词。