Camel Case

JavaScript

Solution 1 with regexp

/**
 * Counts the number of words in a camelCase string.
 *
 * - T.C: O(n).
 * - S.C: O(1).
 *
 * @param {string} s
 * @return {number}
 */
function camelcase(s) {
  if (s.length === 0) return 0;

  var re = /[A-Z]/,
      cnt = 1,
      i;

  for (i = 0; i < s.length; ++i)
    if (re.test(s[i])) ++cnt;

  return cnt;
}

Start assuming there is one word. Then loop increment the count for each uppercase letter found.

Solution 2 with includes()

/**
 * Counts the number of words in a camelCase string.
 *
 * - T.C: O(n).
 * - S.C: O(1).
 *
 * @param {string} s
 * @return {number}
 */
function camelcase(s) {
  if (s.length === 0) return 0;

  var AZ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

  var cnt = 1,
      i;

  for (i = 0; i < s.length; ++i)
    if (AZ.includes(s[i])) ++cnt;

  return cnt;
}

Essentially the same approach as solution 1, except using a string of uppercase letters with an includes() instead of a regexp.

Solution 3 with regex split

/**
 * Counts the number of words in a camelCase string.
 *
 * - T.C: O(n).
 * - S.C: O(1).
 *
 * @param {string} s
 * @return {number}
 */
function camelcase(s) {
  if (s.length === 0) return 0;

  return s.split(/[A-Z]/).length;
}

😍