解题思路

这是一道字符串处理问题,主要思路如下:

  1. 问题分析:

    • 输入一个包含数字、字母和特殊字符的优惠券码
    • 需要提取其中的有效字符(字母和特定特殊字符)
    • 有效字符包括:
      • 大小写字母(a-z, A-Z)
      • 特殊字符:[、]、^、_、'、\
  2. 解决方案:

    • 遍历字符串的每个字符
    • 判断字符是否为有效字符
    • 保留有效字符,去除数字
    • 最后添加^作为结尾
  3. 实现细节:

    • 使用字符串存储结果
    • 使用条件判断筛选字符
    • 保持字符的原有顺序

代码

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cin >> s;
    string ret;
    
    // 遍历输入字符串
    for(int i = 0; i < s.size(); i++) {
        // 判断是否为有效字符
        if((s[i] >= 'a' && s[i] <= 'z') ||    // 小写字母
           (s[i] >= 'A' && s[i] <= 'Z') ||    // 大写字母
           s[i] == '[' || s[i] == ']' ||      // 特殊字符
           s[i] == '^' || s[i] == '_' ||
           s[i] == '\'' || s[i] == '\\') {
            ret.push_back(s[i]);
        }
    }
    
    // 添加结尾的^
    cout << ret + "^" << endl;
    return 0;
}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        StringBuilder ret = new StringBuilder();
        
        // 遍历输入字符串
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            // 判断是否为有效字符
            if((c >= 'a' && c <= 'z') ||      // 小写字母
               (c >= 'A' && c <= 'Z') ||      // 大写字母
               c == '[' || c == ']' ||        // 特殊字符
               c == '^' || c == '_' ||
               c == '\'' || c == '\\') {
                ret.append(c);
            }
        }
        
        // 添加结尾的^
        System.out.println(ret.toString() + "^");
        sc.close();
    }
}
def extract_coupon_code(s: str) -> str:
    ret = ""
    
    # 遍历输入字符串
    for c in s:
        # 判断是否为有效字符
        if (c.isalpha() or                # 字母
            c in ['[', ']', '^', '_', "'", '\\']): # 特殊字符
            ret += c
    
    # 添加结尾的^
    return ret + "^"

def main():
    s = input().strip()
    print(extract_coupon_code(s))

if __name__ == "__main__":
    main()

算法及复杂度

  • 算法:字符串遍历
  • 时间复杂度: - 为输入字符串长度
  • 空间复杂度: - 需要存储结果字符串