力扣321:
第二题:2486. 追加字符以获得子序列 - 力扣(Leetcode)
双指针,一次遍历字符串。
class Solution {
public int appendCharacters(String s, String t) {
int tIndex = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == t.charAt(tIndex)) {
tIndex++;
if (tIndex == t.length()) {
return 0;
}
}
}
return t.length() - tIndex;
}
}
92双周:
第二题:2482. 行和列中一和零的差值 - 力扣(Leetcode)
分别使用两个数组来储存每一行、每一列“1”的个数。后面的计算中就直接代入计算。
class Solution {
public:
vector<vector<int>> onesMinusZeros(vector<vector<int>>& grid) {
int Row = (int)grid.size();
int Col = (int)grid[0].size();
int row[Row];
memset(row, 0, sizeof(row));
int col[Col];
memset(col, 0, sizeof(col));
for (int r = 0; r < Row; r ++){
int s = 0;
for (int c = 0; c < Col; c ++){
s += grid[r][c];
}
row[r] = s;
}
for (int c = 0; c < Col; c ++){
int s = 0;
for (int r = 0; r < Row; r ++){
s += grid[r][c];
}
col[c] = s;
}
vector<vector<int>> res = vector<vector<int>>(Row, vector<int>(Col, 0));
for (int r = 0; r < Row; r ++){
for (int c = 0; c < Col; c ++){
int r1 = row[r];
int c1 = col[c];
int r0 = Row - r1;
int c0 = Col - c1;
res[r][c] = r1 + c1 - r0 - c0;
}
}
return res;
}
};