剑指 Offer 05. 替换空格
class Solution { public: string replaceSpace(string s) { string res; for(auto e : s) { if(e == ' ') { res+='%'; res+='2'; res+='0'; } else res+=e; } return res; } };
剑指 Offer 58 - II. 左旋转字符串
class Solution { public: string reverseLeftWords(string s, int n) { int size = s.size(); int div = (size-n)%size; reverse(s.begin(), s.end()); reverse(s.begin(), s.begin()+div); reverse(s.begin()+div, s.end()); return s; } };
剑指 Offer 03. 数组中重复的数字
class Solution { public: int findRepeatNumber(vector<int>& nums) { map<int,int>mp; for(auto e : nums) { if(mp[e]==1) return e; mp[e]++; } return -1; } };
剑指 Offer 53 - I. 在排序数组中查找数字
class Solution {
public:
int search(vector<int>& nums, int target) {
int res = 0;
int idx = getFirstTargetIndex(nums, target);
if (idx == -1) return res;
for (int i = idx; i < nums.size() && nums[i] == target; i++) res++;
return res;
}
private:
int getFirstTargetIndex(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
int res = -1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] > target) right = mid - 1;
else if (nums[mid] < target) left = mid + 1;
else {
res = mid;
right = mid - 1;
}
}
return res;}
};
剑指 Offer 53 - II. 0~n-1中缺失的数字
class Solution { public: int missingNumber(vector<int>& nums) { for(int i = 0; i < nums.size(); i++) { if(nums[i]!=i) return i; } return nums.back()+1; } };