一、题目
给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串,点击此处跳转。
示例 1:
输入: s1 = “abc”, s2 = “bca”
输出: true
示例 2:
输入: s1 = “abc”, s2 = “bad”
输出: false
说明:文章来源:https://www.toymoban.com/news/detail-654002.html
- 0 <= len(s1) <= 100
- 0 <= len(s2) <= 100
二、C# 题解
与 LeetCode 面试题 01.01. 判定字符是否唯一 题目类似,使用数组记录出现次数,各个字符出现次数一样,则重排后结果一致。文章来源地址https://www.toymoban.com/news/detail-654002.html
public class Solution {
public bool CheckPermutation(string s1, string s2) {
int l1 = s1.Length, l2 = s2.Length;
if (l1 != l2) return false; // 如果长度都不相等,则必为 false
int[] count = new int[26]; // 数组计数
for (int i = 0; i < l1; i++) {
count[s1[i] - 'a']++; // s1 中出现的字符记录为 + 1 次
count[s2[i] - 'a']--; // s2 中出现的字符记录为 - 1 次
}
for (int i = 0; i < count.Length; i++) {
if (count[i] != 0) return false; // 若最后记录结果不为 0,则返回 false
}
return true; // 否则返回 true
}
}
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( 1 ) O(1) O(1),取决于出现字符的种类多少。
到了这里,关于LeetCode 面试题 01.02. 判定是否互为字符重排的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!