这道题我用了从后往前的思路。
如果当前是小写的,上一个是大写的,直接false,否则continue
如果当前是大写的,上一个是大写的,continue,否则看当前是不是首尾,不是返回false。
6ms,打败70%+
bool detectCapitalUse(string word) {
if (word.empty()) {
return false;
}
bool isCapital = false;
for (int i = word.size() - 1 ; i >= 0 ; --i) {
if (word[i] <= 'z' && word[i] >= 'a') {
if (isCapital) return false;
} else {
if (isCapital) continue;
if (i != 0 && i != word.size() - 1) return false;
isCapital = true;
}
}
return true;
}