2020_12_17 LeetCode刷题
今天的三道题完成的比较顺,两道题目在15min内完成,之后一道题目在稍微调试之后也顺利完成。
普通模拟题。思路和模式字符串匹配一样,先判定两个字符串的长度是否相等,之后运用映射对于映射的字符串进行存储,同时每两个字符的映射是一一对应的,不能是一对多。
class Solution {
public:
bool isIsomorphic(string s, string t) {
int len1 = s.length();
int len2 = t.length();
bool flag = true;
map<char,char> p;
set<char> q;
set<char> q1;
if(len1 == len2) {
for(int i = 0 ; i < len1 ; i++) {
if(!q.count(s[i])) {
if(!q1.count(t[i])) {
q.insert(s[i]);
p[s[i]] = t[i];
q1.insert(t[i]);
} else {
flag = false;
break;
}
} else {
if(p[s[i]] == t[i])
continue;
else {
flag = false;
break;
}
}
}
} else
flag = false;
return flag;
}
};
递归回溯题。递归函数在是否传回参数上有所考虑,最终确定不传回参数,每次对于左右子树的指针指向进行交换,之后递进到下一层,继续交换,直到为空。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr) {
return root;
}
ReseTree(root);
return root;
}
void ReseTree(TreeNode* root) {
if(root == nullptr)
return;
TreeNode* templeft = root->left;
TreeNode* tempright = root->right;
root->left = tempright;
root->right = templeft;
ReseTree(root->left);
ReseTree(root->right);
}
};
普通模拟题。注意判定过程中的数组越界的问题,以及to_string函数对于数字的转换,负数转换要进行特殊判定。同时对于INT_MAX进行转换会带负号,需要对于多余的负号进行删除,保证结果的正确性。
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> p;
int len1 = nums.size();
for(int i = 0; i < len1; i++){
int start = i, end1 = i;
while(i + 1 < len1 && (nums[i] + 1) == nums[i + 1]) {
i += 1;
}
end1 = i;
if(start == end1) {
string ans = numtostring(nums[start]);
p.push_back(ans);
} else {
string snum = numtostring(nums[start]);
string ennum = numtostring(nums[end1]);
string ans = snum + "->" + ennum;
int st1 = 0;
while(st1 < ans.length() && ans[st1] == '-')
st1 += 1;
if(st1 > 1)
ans.erase(0,st1 - 1);
p.push_back(ans);
}
}
return p;
}
string numtostring(int num) {
string ans = "";
if(num > 0)
ans = to_string(num);
if(num == 0)
ans = "0";
if(num < 0)
ans = "-" + to_string(abs(num));
return ans;
}
};