题目
-
检查是否所有 A 都在 B 之前
-
银行中的激光束数量
思路与算法
- 前两道都是简单的模拟,注意特殊情况的处理即可。第二个就是简单的相乘再累加即可,注意全0字符串的处理。
代码实现
- 检查是否所有 A 都在 B 之前
class Solution {
public:
bool checkString(string s) {
int j = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == 'b') {
j = i;
for (;j < s.size(); ++j) {
if (s[j] == 'a') {
return false;
}
}
}
}
return true;
}
};
- 银行中的激光束数量
class Solution {
public:
int numberOfBeams(vector<string>& bank) {
int res = 0;
int pre = 0;
int cur = 0;
for (int i = 0; i < bank.size(); ++i) {
cur += getNum(bank[i]);
if (pre != 0) {
res += pre * cur;
}
if (cur != 0) {
pre = cur;
}
cur = 0;
}
return res;
}
private:
bool isZero (string &str) {
for (int i = 0; i < str.size(); ++i) {
if (str[i] == '1') {
return false;
}
}
return true;
}
int getNum (string &s) {
int res = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '1') {
res++;
}
}
return res;
}
};
写在最后
- 新年伊始,保持好的作息和更严肃的学习和生活节奏。