题解 | #删除公共字符#

删除公共字符

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;
}
全部评论

相关推荐

点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 15:08
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务