1.题目要求:
给你一个字符串 word。如果 word 中同时出现某个字母 c 的小写形式和大写形式,并且 每个 小写形式的 c 都出现在第一个大写形式的 c 之前,则称字母 c 是一个 特殊字母 。
返回 word 中 特殊字母 的数量。
示例 1:
输入:word = "aaAbcBC"
输出:3
解释:
特殊字母是 'a'、'b' 和 'c'。
示例 2:
输入:word = "abc"
输出:0
解释:
word 中不存在特殊字母。
示例 3:
输入:word = "AbBCab"
输出:0
解释:
word 中不存在特殊字母。
提示:
1 <= word.length <= 2 * 105
word 仅由小写和大写英文字母组成。
2.题目代码:
class Solution {
public:
int numberOfSpecialChars(string word) {
vector<char> string1;
//把大写字母放入vector容器
for(int i = 0;i < word.size();i++){
if(word.at(i) >= 'A'&& word.at(i) <= 'Z'){
string1.push_back(word.at(i));
}
}
string1.push_back('\0');
//把大写字母去重
sort(string1.begin(),string1.end());
string1.erase(unique(string1.begin(),string1.end()),string1.end());
int count = 0;
//遍历string1容器,查找符合条件的值
for(vector<char>::iterator it = string1.begin();it != string1.end();it++){
int pos = word.find(*it);
int pos1 = word.rfind(*it + 32);
if(pos1 != -1&& pos1 < pos){
count++;
}
}
return count;
}
};