C# 查找包含字符所有匹配项的最大子字符串
我需要找出最大的子字符串,它包含C中所有出现的字符 示例-输入字符串:我的名字是granar Nee要找出包含所有字符a出现的最大子字符串,结果是ame is grana 请在算法方面帮助我?这应该可以做到:C# 查找包含字符所有匹配项的最大子字符串,c#,C#,我需要找出最大的子字符串,它包含C中所有出现的字符 示例-输入字符串:我的名字是granar Nee要找出包含所有字符a出现的最大子字符串,结果是ame is grana 请在算法方面帮助我?这应该可以做到: var text = "my name is granar"; var firstA = text.IndexOf("a"); var LastA = text.LastIndexOf("a"); int length = LastA - firstA + 1; if (firstA !=
var text = "my name is granar";
var firstA = text.IndexOf("a");
var LastA = text.LastIndexOf("a");
int length = LastA - firstA + 1;
if (firstA != -1)
var result = text.Substring(firstA, length);
算法:int begin=-1,end=-1
在for循环中
在“开始”和“结束”中保存“a”的第一个索引
每次遇到“a”时不断更新结束
开始,结束
对于较大的字符串,这是一个更好的算法,因为我们只对整个字符串迭代一次
SubstringIndexOf'a',LastIndexOf'a'-IndexOf'a'您的代码在哪里!到目前为止你试过什么?一行并不总是比多行好。你做的事情不止一次,如果没有一次,也不安全,你会得到一个例外。在第一个版本中使用变量;调用两个IndexOf函数会增加解决方案的复杂性。在内部它将运行两次。嗯,我有多行的答案,但它是如此简单,我认为它应该是一行解决方案。你的权利@Renuka。Modified@JamesDev:仍然是可能的异常,但仍为+1
static void Main(string[] args)
{
int begin = -1, end = -1;
string input = "my name is granar";
bool isfirst = true;
for (int i = 0; i < input.Length; i++)
{
if(input[i] == 'x')
{
if (isfirst)
{
begin = i;
end = i;
isfirst = false;
}
else
end = i;
}
}
if (begin != -1)
{
string substr = input.Substring(begin, end - begin + 1);
Console.WriteLine(substr);
}
else Console.WriteLine("Not Found");
Console.ReadKey();
}