hasSequentialCharacters method

bool hasSequentialCharacters()

Implementation

bool hasSequentialCharacters() {
  // Check for sequential numbers (123, 234, etc.)
  for (int i = 0; i < length - 2; i++) {
    final String substr = substring(i, i + 3);
    if (RegExp(r'^\d{3}$').hasMatch(substr)) {
      final List<int> nums = substr.split('').map(int.parse).toList();
      if (nums[1] == nums[0] + 1 && nums[2] == nums[1] + 1) {
        return true;
      }
      if (nums[1] == nums[0] - 1 && nums[2] == nums[1] - 1) {
        return true;
      }
    }
  }

  // Check for sequential letters (abc, bcd, etc.)
  for (int i = 0; i < length - 2; i++) {
    final String substr = substring(i, i + 3).toLowerCase();
    if (RegExp(r'^[a-z]{3}$').hasMatch(substr)) {
      final List<int> codes = substr.codeUnits;
      if (codes[1] == codes[0] + 1 && codes[2] == codes[1] + 1) {
        return true;
      }
      if (codes[1] == codes[0] - 1 && codes[2] == codes[1] - 1) {
        return true;
      }
    }
  }

  return false;
}