第60天(简单题&中等题 数据结构)

打卡第六十天
2道简单题+1道中等题
image

题目:
image

思路:逐个处理输入字符串 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;
    }
};

耗时≈一小时 明天继续

posted @ 2025-12-20 00:24  Wy0518  阅读(0)  评论(0)    收藏  举报