写完之后才发现应该先把所有的输入变成大写字母,就没后面这么多toupper要写了。
懒得改了。。。
日常水题

#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <cctype>
using namespace std;
int main(void)
{
    string temp1, temp2;
    cin >> temp1 >> temp2;
    int index1 = 0, index2 = 0;
    int leng1 = temp1.size(), leng2 = temp2.size();
    set<char> res;
    vector<char> re;
    while (index1 < leng1 && index2 < leng2)
    {
        if (temp2[index2] == temp1[index1])
        {
            index1++;
            index2++;
        }
        else
        {
            if (res.count(toupper(temp1[index1]))== 0)
            {
                res.insert(toupper(temp1[index1]));
                re.push_back(toupper(temp1[index1]));
                index1++;
            }
            else
            {
                index1++;
            }
        }
    } 
    while (index1 < leng1)
    {
        if (res.count(toupper(temp1[index1])) == 0)
        {
            res.insert(toupper(temp1[index1]));
            re.push_back(toupper(temp1[index1]));
            index1++;
        }
        else
        {
            index1++;
        }
    }
    int i;
    for (i = 0; i < re.size(); i++)
    {
        printf("%c", re[i]);
    }
}

哦哦说一下,为啥要用set。
pat的尿性总是要卡你的时的。
我不知道直接用vector去find会不会超时。
set的查找只需要log(N)的时间,所以多做一个set容器,作为检查容器。
这样能减少很多的时间。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐