我有一個函數,檢查一個字符串是否包含重複使用std :: map通過把每個字符作爲關鍵。無法弄清楚爲什麼這不起作用。檢查一個字符串是否包含重複使用std :: map
#include<iostream>
#include<map>
#include<string>
int unique_char(std::string s){
for(int i=0 ; i < s.size(); i++)
{
std::map<char,int> uniq_hash_table;
std::pair<std::map<char,int>::iterator,bool> ret;
ret = uniq_hash_table.insert(std::pair<char,int>(s[i],0));
if(ret.second==false)
{
std::cout << "The string contains duplicates" << std::endl;
return 1;
}
}
return 0;
}
int main()
{
std::string s="abcd";
std::string s1="aabc";
if(unique_char(s)==0){
std::cout << "The 1st string does not contain duplicates" << std::endl;}
if(unique_char(s1)==0){
std::cout << "The 2nd string does not contain duplicates" << std::endl;}
return 0;
}
程序對於這兩個示例都返回「字符串不包含重複項」。
ps:我故意使用std :: map來獲得O(n)解決方案。
「uniq_hash_table」是一個非常具有誤導性的名字...... –
爲什麼當你需要的所有東西都是一套時,你會使用地圖? –
不幸的是我相信這是這個任務。今天下午我們還有另外一個提問者,他有類似的任務。另一個提交者不得不實現哈希表。 – user4581301