首页 > 面试题:将字符串s1中所有出现在字符串s2中的字符删除
头像
牛客384052679号
编辑于 2021-07-17 17:10
+ 关注

面试题:将字符串s1中所有出现在字符串s2中的字符删除

ps:代码已经修改,本地简单测了一下没问题。

返回一个新的字符串,不要使用set,map等。
没有搜到很好的解答,贴一个自己当时的思路,抛砖引玉。
(面试官没让运行,大家看思路为主,可能有错误)

//字符串过滤,返回值string
//将s1中在s2中重复出现的字符去掉

//位运算模拟set
string myFilter1(string s1, string s2) {
    //存储结果
        string res;

    if (s1.empty() || s2.empty()) {
        res = s1;
        return res;
    }
    
    //记录s2中的字符
    vector<int> mySet(4);

    for (auto& ch : s2) {
        int idx = ch / 32;
        mySet[idx] |= (1 << (ch % 32));
    }

    for (auto& ch : s1) {
        int idx = ch / 32;
        //只拷贝s2中没有出现的字符
        if (!(mySet[idx] & (1 << (ch % 32)))) {
            res.push_back(ch);
        }
    }

    return res;
}


更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐