假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,
比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,
若是a就a[0]--,b就a[1]--。最后只有等于0的才是匹配
比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,
所以这两个字符串是匹配的。要求高效!
static bool IsMatch(string s1, string s2)
{
if (s1 == null && s2 == null) return true;
if (s1 == null || s2 == null) return false;
if (s1.Length != s2.Length) return false;
int[] check = new int[128];
foreach (char c in s1)
{
check[(int)c]++;
}
foreach (char c in s2)
{
check[(int)c]--;
}
foreach (int i in check)
{
if (i != 0) return false;
}
return true;
}用类似于桶排序的原理。建立size为128的一个字符数组,循环第一个string的每个char,若是小写a就a[0]++,b就a[1]++。在循环第二个string的每char若是a就a[0]--,b就a[1]--。最后只有等于0的才是匹配
174

被折叠的 条评论
为什么被折叠?



