Javascript Function to Detect Capital String

  • 时间:2020-09-07 13:13:13
  • 分类:网络文摘
  • 阅读:124 次

Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds:

All letters in this word are capitals, like “USA”.
All letters in this word are not capitals, like “leetcode”.
Only the first letter in this word is capital, like “Google”.
Otherwise, we define that this word doesn’t use capitals in a right way.

Example 1:
Input: “USA”
Output: True

Example 2:
Input: “FlaG”
Output: False

Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.

Detect Capital String using Javascript Function

One intutive way is to count the number of Captial letters in the given string. Then it is a valid capital string if: the count is zero (no captial letters), or count is equal to the length (all are captial letters), or count is one and the first character is uppercase.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    const len = word.length;
    if (len === 0) return false;
    let cnt = 0;
    let first = false;
    for (let i = 0; i < len; ++ i) {
        const ch = word.charAt(i);
        if ((ch >= 'A') && (ch <= 'Z')) {
            cnt ++;
            if (i == 0) first = true;
        }
    }
    return (cnt === 0) || ((cnt === 1) && first) || (cnt === len);
};
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    const len = word.length;
    if (len === 0) return false;
    let cnt = 0;
    let first = false;
    for (let i = 0; i < len; ++ i) {
        const ch = word.charAt(i);
        if ((ch >= 'A') && (ch <= 'Z')) {
            cnt ++;
            if (i == 0) first = true;
        }
    }
    return (cnt === 0) || ((cnt === 1) && first) || (cnt === len);
};

Using RegExp to Detect Capital String

Using Regular Expression in Javascript helps to make the solution one-line and concise:

1
2
3
4
5
6
7
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    return /^([A-Z]+|[A-Z][a-z]*|[a-z]+)$/.test(word);
};
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    return /^([A-Z]+|[A-Z][a-z]*|[a-z]+)$/.test(word);
};

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
齐桓公伐楚盟屈完原文及翻译  曹刿论战原文及翻译  数学题:组成只能被3整除不能被9整除的4位数  数学题:将某款服装按标价打8折出售,仍可盈利10%  数学题:把一根长30cm,底面半径是8cm的圆木平均锯成4段  数学题:甲乙两种皮鞋的原价相同,换季时  奥数题:1994年“世界杯”足球赛中  数学题:如何按照一定的比例把小长方形扩大成与大长方形完全重的图形  问答题:说明学生总数、每辆车载客数、客车数成什么比例  数学题:有一个礼品盒,用彩绳扎成如右图的形状 
评论列表
添加评论