記事ディレクトリ
1. トピック
小文字で構成される 2 つの文字列 s1 と s2 がある場合、一方の文字列の文字を再配置後に別の文字列に変更できるかどうかを判断するプログラムを作成してください。ここをクリックしてジャンプしてください。
例 1:
入力: s1 = “abc”、s2 = “bca”
出力: true
例 2:
入力: s1 = “abc”、s2 = “bad”
出力: false
例証します:
- 0 <= len(s1) <= 100
- 0 <= len(s2) <= 100
2.C# ソリューション
LeetCode のインタビューの質問 01.01. 文字が一意であるかどうかを判断する と同様に、配列を使用して出現数を記録します。各文字の出現数が同じであれば、並べ替え後の結果は同じになります。
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
}
}