Given two string s1 and s2, we want to check if one can be reproduced by permutating the chars of the others.
Example:
Given s1 = "race" and s2 = "care" Ans = true
Given s1 = "heart" and s2 = "earth" Ans = true
Given s1 = "test" and s2 = "set" Ans = false
Solution:
First we can check the length of each string and if they are not the same we can return false.
Then we can throw both chars of each string into a dictionary the chars as a key and the count of each occurrence of chars as a value.
Then we can iterate through one of the dictionary and check if the values (count of chars) matches for each key (char in the string)
public static bool CheckPermutation (string s1, string s2) {
if (s1.Length != s2.Length) return false;
Dictionary<char, int> dict = new Dictionary<char, int>();
Dictionary<char, int> dict2 = new Dictionary<char, int>();
foreach (char c in s1) {
if (!dict.ContainsKey(c))
dict.Add(c, 0);
else
dict[c]++;
}
foreach (char c in s2) {
if (!dict2.ContainsKey(c))
dict2.Add(c, 0);
else
dict2[c]++;
}
foreach (KeyValuePair<char, int> kv in dict) {
if (!dict2.ContainsKey(kv.Key))
return false;
else
if (kv.Value != dict2[kv.Key])
return false;
}
return true;
}