第60天(简单题&中等题 数据结构)
打卡第六十天
2道简单题+1道中等题

题目:

思路:逐个处理输入字符串 s 中的每个字符,使用结果字符串 ans 作为栈来存储处理后的字符,对当前字符 c与结果字符串末尾字符 b ,计算两个字符的ASCII码绝对差值,如果= 1或= 25,则删除已存入的末尾字符并跳过当前字符,否则保留,如果不满足上述条件,则将当前字符添加到结果中。
代码:
class Solution {
public:
string resultingString(string s) {
string ans;
for (char c : s) {
if (ans.size() > 0) {
char b = ans.back(); // 结果字符串的最后一个字符
int det = max(b, c) - min(b, c);// 计算两个字符ASCII码的绝对差值
if (det == 1 || det == 25) {// 如果是相邻字母或'a'和'z'的特殊情况
ans.pop_back(); // 移除已存入的字符
continue; // 跳过当前字符
}
}
ans.push_back(c); // 将当前字符加入结果
}
return ans;
}
};
耗时≈一小时 明天继续

浙公网安备 33010602011771号