1657. 确定两个字符串是否接近
分析
- 长度检查:
- 如果
word1
和word2
的长度不同,则它们无法接近,直接返回false
- 如果
- 字符集合一致性检查:
- 两个字符串需要包含相同的字符集合。例如,
word1 = "abc"
和word2 = "bca"
包含的字符都是{a, b, c}
,可以进行字符交换;而word1 = "abc"
和word2 = "bcd"
的字符集合不同,不可能接近
- 两个字符串需要包含相同的字符集合。例如,
- 频次匹配:
- 统计每个字符串中字符的频次,并将频次排序。若两个字符串的字符频次分布相同,则可以通过变换使其互相接近
时间复杂度
- 统计字符频次的时间为
O(n)
,其中n
是字符串的长度 - 排序频次数组的时间为
O(26log26)
,常数级别可视为O(1)
总时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|