500. 键盘行 vector

 

标准库类型 vector

        vector 表示同一种对象的集合。vector 是一个类模板,vector 本身不是类。但却是编译器生成类的说明,当使用模板实例化类时必须指明实例化成何种类型,vector 使用尖括号 <> 来指明实例化类型。vector 能容纳绝大多数对象作为其元素(引用除外。引用不是对象),甚至 vector 本身。

        vector 的初始化同 string 同样,另外C++11 还为 vector 加入了列表初始化的方法。用花括号括起来的0个或多个初始元素值被赋给 vector 对象。

vector<string> vs = {"cs","dn"};

        列表初始化会给阅读带来混淆,由于列表中的值既能够表示初始值也能够表示元素数量,编译器会首先觉得是列表初始化(将列表中的值当作初始值来处理)。假设不行,才会考虑其它初始化方式。 

vector<int> v1(10);//v1有10个元素,都为0
vector<int> v2{10};//v2有1个元素。为10
vector<int> v3(10,1);//v3有10个元素,都为1
vector<int> v4{10,1};//v4有两个元素。10和1
vector<string> v5{"Hello","Hi"};//v5有两个元素,列表初始化
vector<string> v6{10};//v6有10个空串元素

vector序列式容器、unorder_map关联式容器

 for(auto &word:words)   有&可以对word进行改变可以改变words的原有值

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        unordered_set<char> dict1 = { 'q','Q','w','W','e','E','r','R','t','T','y','Y','u','U','i','I','o','O','p',
                                     'P' };
		unordered_set<char> dict2 = { 'a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L'};
		unordered_set<char> dict3 = { 'z','Z','x','X','c','C','v','V','b','B','n','N','m','M'};

		vector<string> res;

		for (auto &word : words)
		{
			bool d1 = true, d2 = true, d3 = true;

			for (auto & ch : word)
			{
				if (d1) {
					auto it = dict1.find(ch);
					if (it == dict1.end()) d1 = false;
				}

				if (d2) {
					auto it = dict2.find(ch);
					if (it == dict2.end()) d2 = false;
				}

				if (d3) {
					auto it = dict3.find(ch);
					if (it == dict3.end()) d3 = false;
				}
			}

			if (d1 || d2 || d3) res.push_back(word);
		}

		return res;
    }
};

 

猜你喜欢

转载自blog.csdn.net/sinat_26970269/article/details/81076494