520. Detect Capital
leetcode easy
Task
Мы определяем правильное использование заглавных букв в слове, когда выполняется одно из следующих условий:
Все буквы в этом слове заглавные, как "USA".
Все буквы в этом слове строчные, как "leetcode".
Только первая буква в этом слове заглавная, как "Google".
Дана строка word. Верните true, если использование заглавных букв в ней правильное.
Пример:
Input: word = "USA"
Output: true
C# solution
matched/originalusing System.Text.RegularExpressions;
public class Solution {
public bool DetectCapitalUse(string word) {
string pattern = @"[A-Z]*|.[a-z]*";
return Regex.IsMatch(word, pattern);
}
}C++ solution
auto-draft, review before submit#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public bool DetectCapitalUse(string word) {
string pattern = @"[A-Z]*|.[a-z]*";
return Regex.IsMatch(word, pattern);
}
}Java solution
matched/originalimport java.util.regex.*;
class Solution {
public boolean detectCapitalUse(String word) {
String pattern = "[A-Z]*|.[a-z]*";
return Pattern.matches(pattern, word);
}
}JavaScript solution
matched/originalvar detectCapitalUse = function(word) {
let pattern = /^[A-Z]*$|^[a-z]*$|^[A-Z][a-z]*$/;
return pattern.test(word);
};Python solution
matched/originalimport re
class Solution:
def detectCapitalUse(self, word: str) -> bool:
return re.fullmatch(r"[A-Z]*|.[a-z]*", word) is not NoneGo solution
matched/originalimport (
"regexp"
)
func detectCapitalUse(word string) bool {
pattern := "^[A-Z]*$|^[a-z]*$|^[A-Z][a-z]*$"
match, _ := regexp.MatchString(pattern, word)
return match
}Explanation
Algorithm
Шаблон для первого случая в регулярном выражении: [A-Z]*, где [A-Z] соответствует одной заглавной букве от 'A' до 'Z', а * означает повторение предыдущего шаблона 0 или более раз. Этот шаблон представляет "Все заглавные буквы".
Шаблон для второго случая в регулярном выражении: [a-z]*, где [a-z] соответствует одной строчной букве от 'a' до 'z'. Этот шаблон представляет "Все строчные буквы". Шаблон для третьего случая в регулярном выражении: [A-Z][a-z]*, где первая буква заглавная, а остальные строчные.
Объедините эти три шаблона: [A-Z]*|[a-z]*|[A-Z][a-z]*, где | означает "или". Мы можем объединить второй и третий случай, получив . [a-z]*, где . соответствует любому символу. Итоговый шаблон: [A-Z]*|.[a-z]*.
😎