找到包含所有字符

时间:2016-03-14 15:44:34

标签: c#

我需要找出包含C#中所有字符出现的最大子字符串。

示例 - 输入字符串:“我的名字是granar” 需要找出包含所有字符“a”的最大子字符串,结果是“ ame is grana

请帮我算法?

2 个答案:

答案 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)

  1.   

    算法:int begin = -1,end = -1

  2.   

    在for循环中       保存开头和结尾的第一个'a'索引
          每次遇到'a'

    时都会继续更新
  3.   

    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();
        }
    
  4.   

    对于较大的字符串,这是一个更好的算法,因为我们只遍历整个字符串一次。