859.判断是否为亲密数组。
没看清题意,写了一个交换n次相等的两个数组为亲密数组的算法。
class Solution {
public:
bool buddyStrings(string s, string goal) {
if (strcmp(s.c_str(), goal.c_str()) == 0&&s[0]!=s[1])
{
return false;
}
else
{
unordered_map <char, int> A;int i;
for (i = 0; i < 26; i++)
{
A.insert(pair < char, int > {i+97,0 });
}
i = 0;
for (i = 0; i < s.size(); i++)
{
auto iter = A.find(s[i]);
iter->second++;
}
i = 0;
for (i = 0; i < goal.size(); i++)
{
char c = goal[i];
auto iter = A.find(c);
iter->second--;
}
for (auto it = A.begin(); it != A.end(); it++)
{
if (it->second != 0)
{
return false;
}
}
return true;
}
}
};
收获:
判断两个字符串相等
if(strcmp(str.c_str(),str1.c_str())==0)
unordered_map 的插入,查找修改,遍历的方法:
#include<string>
#include<iostream>
#include<unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> dict; // 声明unordered_map对象
// 插入数据的三种方式
dict.insert(pair<string,int>("apple",2));
dict.insert(unordered_map<string, int>::value_type("orange",3));
dict["banana"] = 6;
// 判断是否有元素
if(dict.empty())
cout<<"该字典无元素"<<endl;
else
cout<<"该字典共有"<<dict.size()<<"个元素"<<endl;
// 遍历
unordered_map<string, int>::iterator iter;
for(iter=dict.begin();iter!=dict.end();iter++)
cout<<iter->first<<ends<<iter->second<<endl;
// 查找
if(dict.count("boluo")==0)
cout<<"can't find boluo!"<<endl;
else
cout<<"find boluo!"<<endl;
if((iter=dict.find("banana"))!=dict.end())
cout<<"banana="<<iter->second<<endl;
else
cout<<"can't find boluo!"<<endl;
return 0;
}
(26条消息) map和unordered_map的使用和差别?unordered_map查询效率这么高,为啥还需要map?_JMW1407的博客-CSDN博客