题目描述
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
1 | 输入: s1 = "abc", s2 = "bca" |
示例 2:
1 | 输入: s1 = "abc", s2 = "bad" |
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
题解
排序
1 | public boolean CheckPermutation(String s1, String s2) { |
- 时间复杂度: O(nlogn)
- 空间复杂度: O(logn)*,排序需要 *O(logn) 的空间复杂度。注意,在某些语言(比如 Java & JavaScript)中字符串是不可变的,因此我们需要额外的 O(n) 的空间来拷贝字符串。但是我们忽略这一复杂度分析,因为:
- 这依赖于语言的细节;
- 这取决于函数的设计方式,例如,可以将函数参数类型更改为 char[]。
哈希表
1 | public boolean CheckPermutation(String s1, String s2) { |
- 时间复杂度: O(n)
- 空间复杂度: O(S)*,其中 *S 为字符集大小,此处为 S = 256。
参考资料
__END__