1.题目链接:2325. 解密消息 - 力扣(LeetCode)
解题思路:定义一个新的字符串根据题目条件遍历key数组存放真的key,根据message顺序与26个字符顺序加上新字符串进行替换
class Solution {
public:
string decodeMessage(string key, string message) {
string s;
for(int i=0;i<key.length();i++) //定义s字符串存放真key
{
int m=0;
if(key[i]==' ') continue; //如果为' ',直接进行下一次循环
for(int j=0;j<s.length();j++)
{
if(s[j]==key[i]) m++; //出现重复,即不满足条件
}
if(m==0) s+=key[i];
}
string z="abcdefghijklmnopqrstuvwxyz"; //按26个字母顺序定义字符串
for(int i=0;i<message.length();i++){
if(message[i]==' ') continue;
for(int j=0;j<z.length();j++){
if(message[i]==s[j]){
message[i]=z[j]; //按顺序进行字符串的替换
break;
}
}
}
return message;
}
};
2.题目链接:2326. 螺旋矩阵 IV - 力扣(LeetCode)
题目思路:设置指针把链表中的数据赋给矩阵,不断压缩边界满足蛇形矩阵的要求
解题思路:
class Solution { public: vector<vector<int>> spiralMatrix(int m, int n, ListNode* head) { vector<vector<int>>res(m,vector<int>(n,-1)); //设置一个默认值为1的矩阵 ListNode*p=head; //定义指针指向链表 int up=0,down=m-1; int left=0,right=n-1; //初始化上下左右边界 int i=0; while(p) { for(i=left;i<=right;i++) //先向右进行链表对矩阵的赋值 { res[up][i]=p->val; p=p->next; if(p==NULL) return res; //若指针指向空,则赋值完成输出结果 } if(up<down) up++; //压缩上边界 for(i=up;i<=down;i++) //向下进行赋值操作 { res[i][right]=p->val; p=p->next; if(p==NULL) return res; } if(left<right) right--; //压缩右边界 for(i=right;i>=left;i++) //向左进行赋值操作 { res[down][i]=p->val; p=p->next; if(p==NULL) return res; } if(up<down) down--; //压缩下边界 for(i=down;i>=up;i++) //向上进行赋值操作 { res[i][left]=p->val; p=p->next; if(p==NULL) return res; } if(left<right) left++; //压缩左边界 } //不断循环完成蛇形矩阵的要求 return res; } };