题解 | #删除公共字符#

删除公共字符

https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212

一、暴力循环

去str1里面找str2的值,然后erase。

时间复杂度

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

int main()
{
    string str1, str2;
    getline(cin, str1);
    cin >> str2;
    for(size_t j = 0; j < str2.size(); ++j){
        while(str1.find(str2[j]) != string::npos)
            str1.erase(str1.find(str2[j]), 1);
    }
    cout << str1 << endl;
    return 0;
}

二、哈希
题目说了全是字符,而字符最多也就128个,因此定义一个hash[128];

遍历 str2 ,将对于的 hash 值++

再遍历 str1 ,借助 hash 判断 str1 有无要删除的字符。没有的话就加到 ret 上去。

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

int main()
{
    string str1, str2;
    getline(cin, str1); // cin遇到空格就结束了,用getline输入一行
    getline(cin, str2);
    int hash[128] = {0};
    string ret;
    for(int i = 0; i < str2.size(); ++i)
        hash[str2[i]]++;
    for(int i = 0; i < str1.size(); ++i){
        if(hash[str1[i]] == 0)
            ret += str1[i];
    }
    cout << ret << endl;
    return 0;
}
全部评论

相关推荐

11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务