我需要找出包含C#中所有字符出现的最大子字符串。
示例 - 输入字符串:“我的名字是granar” 需要找出包含所有字符“a”的最大子字符串,结果是“ ame is grana ”
请帮我算法?
答案 0 :(得分:2)
这应该这样做:
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);
答案 1 :(得分:0)
算法:int begin = -1,end = -1
在for循环中 保存开头和结尾的第一个'a'索引
时都会继续更新
每次遇到'a'
strinput.substring(开始,结束)
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();
}
对于较大的字符串,这是一个更好的算法,因为我们只遍历整个字符串一次。