【发布时间】:2008-12-19 05:32:38
【问题描述】:
我有两个字符串:第一个的值为“catdog”,第二个的值为“got”。
我正在尝试找到一个正则表达式来告诉我“got”的字母是否在“catdog”中。我特别希望避免出现重复字母的情况。例如,我知道“got”是一个匹配项,但是“gott”不是一个匹配项,因为“catdog”中没有两个“t”。
编辑:
根据 Adam 在下面的回复,这是我在解决方案中必须使用的 C# 代码。感谢所有回复的人。
注意:我必须将 char 转换为 int 并减去 97 以获得数组的适当索引。在我的情况下,这些字母总是小写。
private bool CompareParts(string a, string b)
{
int[] count1 = new int[26];
int[] count2 = new int[26];
foreach (var item in a.ToCharArray())
count1[(int)item - 97]++;
foreach (var item in b.ToCharArray())
count2[(int)item - 97]++;
for (int i = 0; i < count1.Length; i++)
if(count2[i] > count1[i])
return false;
return true;
}
【问题讨论】:
-
使用 ToList() 上的 ForEach 扩展有一种更简洁的方法...我在下面演示了