如何检查是否可以使用c#中的另一个字符串字符获取字符串?

时间:2012-01-22 01:28:06

标签: c# asp.net string visual-studio algorithm

我正在设计一个问题,我想找到一个给定字符串可以从另一个基本字符串中找到(形成)的次数,其中一个字符只使用一次。

假设我有

string str = "COMPUTER";

string basestr = "**TER** WITH **R** LABEL **COMPUTER** BELONGS TO **COMPUT** QUICK CUTE **COM** FOX JUM **P** S **U** R **T** H **E** LAZY DOG";

所以想要我的程序为这个sting basetr返回3。 这里有一个COMPUTER,另一个是两个单词,最后是单词和字符。

请帮我编程吗? 我怎样才能做到这一点 ? 感谢

1 个答案:

答案 0 :(得分:3)

首先,构造短字符串的字符数。然后构造长字符串的字符数。对于短字符串的每个字符计数,将长字符串中的计数除以短字符串的计数,仅保留整数部分。选择最小的整数 - 这是你问题的答案。

int[] Count(string s) {
    int[] res = new int[256];
    foreach (var c in s) {
        res[c]++;
    }
    return res;
}
int ShortInLong(string ss, string ls) {
    var sc = Count(ss);
    var lc = Count(ls);
    int res = int.MaxValue;
    foreach (var c in ss) {
        int d = lc[c] / sc[c]; // sc[c] is never 0 because of the way we constructed it
        res = Math.Min(res, d);
    }
    return res;
}