class Solution {
public:
bool detectCapitalUse(string word) {
bool res = true; //结果,初始为真
int n = word.length();
vector<int> tmp(n);
for (int i = 0; i < n; i++)
tmp[i] = tolower(word[i]) - word[i];
if (tmp[0]) { //第一位是大写
if (tmp[1]) { //第二位也是大写,则后面都必须为大写(规则1)
for (int i = 2; i < n; i++) {
if (!tmp[i]) return false; //有一个不符合,结果为假
}
} else if (!tmp[1]) { //第二位值小写,则后面都必须为小写(规则3)
for (int i = 2; i < n; i++) {
if (tmp[i]) return false;
}
}
} else if (!tmp[0]) { //若第一位为小写,则后面都必须为小写(规则2)
for (int i = 1; i < n; i++) {
if (tmp[i]) return false;
}
}
return res;
}
};
解法二:py一行搞定
善用str函数
class Solution:
def detectCapitalUse(self, word: str) -> bool:
return word.islower() or word.isupper() or word.istitle()
#或者
#return word.upper()==word or word.lower()==word or word.title()==word