第一题 替换所有问号
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public:string modifyString(string s) {string ret;for(int i=0;i<s.size();i++){if(i==0){if(s[i]=='?'&&i+1<s.size()){for(char a='a';a<='z';a++){if(a!=s[i+1]){ret+=a;break;}}}else if(i+1>=s.size()) ret+='a';else ret+=s[i];}else{if(s[i]=='?'){ for(char a='a';a<='z';a++){if(ret[i-1]!=a&&i+1<s.size()&&s[i+1]!=a){ret+=a;break;}if(i+1>=s.size()&&ret[i-1]!=a){ret+=a;break;}}}else ret+=s[i];}}return ret;}
};
第二题 提莫攻击
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int total=0;total+=duration;for(int i=1;i<timeSeries.size();i++){int x=timeSeries[i]-timeSeries[i-1];//计算中毒时间的差值来判断中毒伤害的叠加if(x<duration) total+=x;else total+=duration;}//total+=3;return total;}
};
第三题 字形变换
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public:string convert(string s, int numRows) {if(numRows==1) return s;//这里不进行特判一定会超时string ret;int d=(numRows-1)*2;//画图观察第一行的间距差for(int i=0;i<s.size();i+=d)//先处理第一行{ret+=s[i];}int y=d-1;//第i行第二个数字for(int i=1;i<numRows-1;i++)//第i行,是numsRows而不是s数组的size{for(int j=i,k=d-j;j<s.size()||j<s.size();j+=d,k+=d)//此处一共需要两组数据,特别注意{if(j<s.size())ret+=s[j];if(k<s.size())ret+=s[k];}}for(int i=numRows-1;i<s.size();i+=d){ret+=s[i];}return ret;}
};// class Solution {
// public:
// string convert(string s, int numRows) {
// if (numRows < 2)
// return s;
// vector<string> rows(numRows);
// int i = 0, flag = -1;
// for (char c : s) {
// rows[i].push_back(c);
// if (i == 0 || i == numRows -1)
// flag = - flag;
// i += flag;
// }
// string res;
// for (const string &row : rows)
// res += row;
// return res;
// }
// };