第一题:6108. 解密消息
思路:首先按照key替换基础的字符串得到n,然后将message和字符串n对比,找到相应的字符用基础字符串s来替换
class Solution {
public:
string decodeMessage(string key, string message) {
string n;
for(int i=0;i<key.length();i++){
int m=0;
if(key[i]==' ') continue;
for(int j=0;j<n.length();j++)
{
if(n[j]==key[i]) m++;
}
if(m==0) n+=key[i];
}//替换字符串
string s="abcdefghijklmnopqrstuvwxyz";
for(int i=0;i<message.size();i++){
if(message[i]==' ') continue;
for(int j=0;j<s.size();j++){
if(message[i]==n[j]){
message[i]=s[j];
break;
}
}
}//找到对应的字符替换
return message;
}
};
第二题:6111. 螺旋矩阵 IV
思路:初始化一个一维数组tmp并使其元素为-1,将链表的数据储存到里面,缺少的就是-1;然后用类似acwing中756题蛇形矩阵来给二维数组ans依次赋值,注意边界即可
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
vector<vector<int>> spiralMatrix(int m, int n, ListNode* head) {
vector<int> tmp(m*n,-1);
vector<vector<int>> ans(m,vector<int> (n));
int t=0;
while(head!=NULL){
tmp[t++]=head->val;
head=head->next;
}//将链表的数据存储在数组tmp中,缺少的用-1补齐
int left=0,right=n-1,top=0,bottom=m-1;
t=0;
while(left<=right&&top<=bottom){
for(int i=left;i<=right;i++) ans[top][i]=tmp[t++];
for(int i=top+1;i<=bottom;i++) ans[i][right]=tmp[t++];
for(int i=right-1;i>=left&&top<bottom;i--)//注意边界条件的限制
ans[bottom][i]=tmp[t++];
for(int i=bottom-1;i>top&&left<right;i--) //不能等于,因为可能会重复数组内的某个元素
ans[i][left]=tmp[t++];
left++;
right--;
top++;
bottom--;
}
return ans;
}
};