Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# string1中存在多少string2?_C#_Algorithm_Programming Languages - Fatal编程技术网

C# string1中存在多少string2?

C# string1中存在多少string2?,c#,algorithm,programming-languages,C#,Algorithm,Programming Languages,我试图找到一种算法,该算法从用户(string1)获取一个输入,然后获取另一个输入(string2),然后计算string1中存在多少string2。 例如: 这里第1列中有2个 string1="##" string2="#" answer:2 string1中有2个##:(第一个索引为0,1,第二个索引为1,2) string1中有3个##:(1:索引为0,1;2:索引为1,2;3:索引为2,3) 对于计数#这里我们可以简单地执行以下操作: string1.Length - string2

我试图找到一种算法,该算法从用户(string1)获取一个输入,然后获取另一个输入(string2),然后计算string1中存在多少string2。 例如:

这里第1列中有2个

string1="##"
string2="#"
answer:2
string1中有2个##:(第一个索引为0,1,第二个索引为1,2)

string1中有3个##:(1:索引为0,1;2:索引为1,2;3:索引为2,3)

对于计数#这里我们可以简单地执行以下操作:

string1.Length - string2.Length + 1
但我只能让算法在这样的例子中工作,而输入可以是任何东西。现在我需要一个算法来为我做到这一点。 这是一个y代码,它适用于我的输入,但不适用于所有输入。 例如,如果string2是#a

string1=“#abc##asd####12###”;
字符串string2=“###”;
char[]str2=string2.ToCharArray();
字符串[]str1=string1.Split(str2);
字符串字符=”;
foreach(str1中的字符串s)
foreach(字符c在s中)
chars+=c;
//字符的结果是:a、b、c、a、s、d、1、2
string[]splits=string1.Split(chars.tocharray());
//拆分结果为:#、#、#、#####
整数和=0;
对于(int i=0;iif(splits[i].Length这是一个工作代码:

string string1 = "#abc##asd###12####";
string string2 = "##";
List<int> indexes = new List<int>();
int index = -1;
while((index = string1.IndexOf(string2, index + 1)) >= 0)
{
    indexes.Add(index);
}

Console.WriteLine(indexes.Count);
string1=“#abc##asd####12###”;
字符串string2=“###”;
列表索引=新列表();
int指数=-1;
而((index=string1.IndexOf(string2,index+1))>=0)
{
索引。添加(索引);
}
Console.WriteLine(index.Count);

这是它的一个副本:@BCdotNET你的链接根本不是我的答案。这里的输入可以是任何东西,而在你的链接中它是一个特定的输入。如果你有办法解决这个问题,请回答。
Regex.Matches(string1,string2).Count
@PoweredByOrange回答错误。请尝试string1:#######和string2:######答案必须是2,但您的代码给出的是1,您没有仔细阅读我的示例。有2个,第一个索引为0,1,2,第二个索引为1,2,3。这是其中的一个,这是0###,这是另一个错误的答案。请尝试理解我的答案ing2:#######答案必须是2,但你的代码给出了0。我认为这非常接近。只是一个一个错误。代码给出了6,但答案应该是7。好的,我的错误,a=在while条件下丢失了。我添加了它。做得很好,如果@masoudmohammadi认为这不是正确的答案,那么就没有足够的信息。哦..是的..是的..它是6而不是7..:)@paqogomez我正在用其他输入测试它。
string1.Length - string2.Length + 1
string string1 = "#abc##asd###12####";
string string2 = "##";
char[] str2 = string2.ToCharArray();
string[] str1 = string1.Split(str2);
string chars = "";
foreach (string s in str1)
    foreach (char c in s)
        chars += c;
//Result for chars are:a, b, c, a, s, d, 1, 2 
string[] splits = string1.Split(chars.ToCharArray());
//Result for splits are:#, ##, ###, ####
int sum = 0;
for (int i = 0; i < splits.Length; i++)
{
    if (splits[i].Length<string2.Length)
        continue;
    else
        sum += splits[i].Length - string2.Length + 1;
}
Console.WriteLine(sum);
string string1 = "#abc##asd###12####";
string string2 = "##";
List<int> indexes = new List<int>();
int index = -1;
while((index = string1.IndexOf(string2, index + 1)) >= 0)
{
    indexes.Add(index);
}

Console.WriteLine(indexes.Count);