七月第一天解题报告
本文实现了超链接跳转,查询题目可直接点击题号跳转LeetCode
目录
392. 判断子序列
541. 反转字符串 II
696. 计数二进制子串
面试题 16.24. 数对和
题目
代码演示
class Solution {
public:
bool isSubsequence(string s, string t) {
int i = 0, j = 0;
while(s[i] && t[j]){
if(s[i] == t[j]){
++i;
}
++j;
}
return s[i] == '\0';
}
};
代码演示
class Solution {
void swap(char& a,char& b){
char tmp = a; a = b; b = tmp;
}
public:
string reverseStr(string s, int k) {
int i, j;
int len = s.size();
int start = 0, end;
for(i = 0; start < len; i += 2*k){
end = start + 2*k;
if(end > len){
end = len;
}
if(end - start <= 2*k && end - start >= k){
for(j = start; j < start + k/2; ++j){
swap(s[j], s[2*start+k-j-1]);
}
}else{
for(j = start; j < start + (end-start)/2; ++j){
swap(s[j], s[end-j+start-1]);
}
}
start = end;
}
return s;
}
};
代码演示
class Solution {
int dp[100010];
public:
int countBinarySubstrings(string s) {
s = "#" + s;
int n = s.size();
for(int i = 1; i < n; ++i){
if(s[i] == s[i-1]){
dp[i] = dp[i-1] + 1;
}else{
dp[i] = 1;
}
}
int ans = 0;
for(int i = 1; i < n; ++i){
int l = dp[i];
int ll = dp[i-l];
if(s[i-l] != s[i]){
if(ll >= l){
++ans;
}
}
}
return ans;
}
};
代码演示
class Solution {
public:
vector<vector<int>> pairSums(vector<int>& nums, int target) {
int l, r;
vector<vector<int>>ret;
sort(nums.begin(), nums.end());
l = 0;
r = nums.size() - 1;
while(l < r){
int val = nums[l] + nums[r];
if(val > target){
r--;
}else if(val < target){
l ++;
}else{
ret.push_back({nums[l], nums[r]});
++l;
--r;
}
}
return ret;
}
};