发布: 更新时间:2022-04-25 20:56:44
今天在刷力扣时,遇到一道题:
原题链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string/
我是想着用队列的方式去解决。但是没有想到还有pair这个函数。可以往队列里面同时放两个参数。见识少了。。这里记录一下pair的用法!
pair是一种简单的模板类型,其中包含两个数据值,类似map的键值对,两个数据的类型可以不同。
1. pari<T1 , T2> p1 //创建一个空的pair对象,它的两个元素分别是T1 和T2类型,采用直初始化
2. pair<T1, T2> P1(V1 , V2) //创建一个pair对象,它的两个元素分别是T1 和T2类型,其中first成员初始化为v1,而second 成员初始化为v2
3. make_pair(v1 , v2) //以v1和v2值创建一个新的pair对象,其元素类型分别是T1 和T2类型
p.first 和 p.second
对应map的key,value。
typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");
上题利用队列和pair解答方法:
class Solution {
public:
int firstUniqChar(string s) {
unordered_map<char, int> position;
queue<pair<char, int>> q;
int n = s.size();
for (int i = 0; i < n; ++i) {
if (!position.count(s[i])) {
position[s[i]] = i;
q.emplace(s[i], i);
}
else {
position[s[i]] = -1;
while (!q.empty() && position[q.front().first] == -1) {
q.pop();
}
}
}
return q.empty() ? -1 : q.front().second;
}
};
标签:c++, leetcode刷题, pair用法 原神3.8心海武器推荐 原神3.8心海带什么武器
阴阳师寻迹骰怎么获得 阴阳师寻迹骰获得方法
王者荣耀妄想都市观光怎么获得 王者荣耀妄想都市观光活动
阴阳师新召唤屋和幕间皮肤效果怎么样 阴阳师新召唤屋和幕间皮肤获取方法介绍
羊了个羊7.26攻略 羊了个羊7月26日怎么过
崩坏星穹铁道求不得成就攻略介绍 崩坏星穹铁道求不得成就怎么获得
崩坏星穹铁道去吧阿刃成就攻略介绍 崩坏星穹铁道去吧阿刃成就怎么获得
时空中的绘旅人罗夏生日有什么复刻 绘旅人罗夏生日礼包复刻一览
银河境界线武器强度怎么看 银河境界线武器强度排行攻略
阴阳师红蛋蛋限时福利怎么获得 阴阳师再结前缘版本福利介绍