C#找到最长子串的长度

时间:2017-07-13 11:35:47

标签: c# string

我希望得到字符串中最长的子字符串的长度,以","

分隔

例如:

  

test1,test11,test111 - > test111的长度 - > 7

5 个答案:

答案 0 :(得分:8)

input.Split(',').Max( s => s.Length );
  • String.Split返回String[]
  • Linq' Max返回选择器回调
  • 返回的最大值
  • 因此,我们传入每个字符串的长度,并返回遇到的最大值

答案 1 :(得分:3)

戴的解决方案高效,简短且易读;但是在一般情况下 非常长的字符串 Split可能效率低下(数组创建)。好的旧while循环可以在没有额外内存分配的情况下解决问题:

  // Huge string example (about 800M characters)
  // string source = string.Join(",", Enumerable
  //   .Range(1, 40000).Select(i => new string('*', i))); 

  // Test source
  string source = "test1,test11,test111";

  int max = 0;
  int start = 0;

  while (start >= 0) {
    int index = source.IndexOf(',', start);

    int length = (index < 0) ? source.Length - start : index - start;
    max = max > length ? max : length;

    if (index < 0)
      break;

    start = index + 1;
  }

  Console.Write(max);

答案 2 :(得分:1)

var words= "test1,test11,test111".Split(',').ToList();
var res=  words.Aggregate((max, cur) => max.Length > cur.Length ? max : cur);

答案 3 :(得分:0)

你可以使用一点Linq:

inputString.Split(',').OrderBy(s => s.Length).First().Length;

答案 4 :(得分:0)

试试这个

 var longestsubstring = inputString.Split(',')
.OrderByDescending(x => x.Length)
.First().Length;