C#如何检查一个字符串是否包含连续3次相同的字母

C# how to check if a string contains 3 times the same letters in a row

如何检查一个字符串数组是否连续三次出现相同的字母?例如:

AABAC 会 return 不会

AAABC 会 return 是

您可以只扫描 string 值并检查三个相邻字符是否相同

public bool Contains3InARow(string data)
{
  for(var i=0;i<data.Length-2;++i)
   if(data[i]==data[i+1] && data[i+1]==data[i+2]) 
    return true;
  return false;
}

有时(很少)正则表达式是对问题的回答,特别是如果问题是这样的。

bool ism1 = Regex.IsMatch("AABAC", @"(.)"); // false
bool ism2 = Regex.IsMatch("AAABC", @"(.)"); // true

匹配任何字符 (.),然后匹配第一个匹配项 () 两次。

bool ContainsTheSameCharThreeTimesInARow(string s) {
    for (int i = 2; i < s.Length; ++i) {
        if (s[i] == s[i-1] && s[i] == s[i-2])
            return true;
    }
    return false;
}
bool CheckStringHasRepeatForThree(string inputString)
{
   if (inputString.Length < 3) return false;
   return inputString.Where((c,i)=> i >= 2 && s[i-1] == c && s[i-2] == c).Any();
}