给你一个字符串 word。如果 word 中同时存在某个字母的小写形式和大写形式,则称这个字母为 特殊字母 。
返回 word 中 特殊字母 的数量。
示例 1:
输入:word = “aaAbcBC”
输出:3
解释:
word 中的特殊字母是 'a'、'b' 和 'c'。
示例 2:
输入:word = “abc”
输出:0
解释:
word 中不存在大小写形式同时出现的字母。
示例 3:
输入:word = “abBCab”
输出:1
解释:
word 中唯一的特殊字母是 'b'。
提示:
1 <= word.length <= 50
word 仅由小写和大写英文字母组成。
思路
略
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution { public: intnumberOfSpecialChars(string word){ int a[30], b[30]; for (int i = 0; i < word.length(); i++) { int c = word[i]; if ('a' <= c && c <= 'z') { a[c - 'a'] ++; } else { b[c - 'A'] ++; } } int res = 0; for (int i = 0; i <= 25; i++) { if (a[i] && b[i]) res++; } return res; } };
100291.统计特殊字母的数量 II
给你一个字符串 word。如果 word 中同时出现某个字母 c 的小写形式和大写形式,并且 每个 小写形式的 c 都出现在第一个大写形式的 c 之前,则称字母 c 是一个 特殊字母 。
classSolution { public: intminimumOperations(vector<vector<int>>& grid){ int n = grid.size(), m = grid[0].size();
// 预处理把第 j 列都变成数字 k 的操作数 int g[m][10]; memset(g, 0, sizeof(g)); for (int j = 0; j < m; j++) for (int k = 0; k < 10; k++) for (int i = 0; i < n; i++) { if (grid[i][j] != k) g[j][k]++; }
constint INF = 1e9; int f[m][10]; for (int j = 0; j < m; j++) for (int k = 0; k < 10; k++) f[j][k] = INF;
for (int k = 0; k < 10; k++) f[0][k] = g[0][k];
// DP 方程 for (int j = 1; j < m; j++) for (int k = 0; k < 10; k++) for (int kk = 0; kk < 10; kk++) if (k != kk) f[j][k] = min(f[j][k], f[j - 1][kk] + g[j][k]);
int ans = INF; for (int k = 0; k < 10; k++) ans = min(ans, f[m - 1][k]); return ans; } };
classSolution { public: vector<bool> findAnswer(int n, vector<vector<int>>& edges){ vector<vector<tuple<int, int, int>>> g(n); for (int i = 0; i < edges.size(); i++) { auto& e = edges[i]; int x = e[0], y = e[1], w = e[2]; g[x].emplace_back(y, w, i); g[y].emplace_back(x, w, i); }
// 板子 vector<longlong> dis(n, LLONG_MAX); dis[0] = 0; priority_queue<pair<longlong, int>, vector<pair<longlong, int>>, greater<>> pq; pq.emplace(0, 0); while (!pq.empty()) { auto [dx, x] = pq.top(); pq.pop(); if (dx > dis[x]) { continue; } for (auto [y, w, _] : g[x]) { int new_dis = dx + w; if (new_dis < dis[y]) { dis[y] = new_dis; pq.emplace(new_dis, y); } } }