您的位置:首页 > 其它

SRM 574 250 DIV2

2013-06-28 23:28 288 查看
菜鸟的代码:

import java.util.*;
import java.util.regex.*;
import java.text.*;
import java.math.*;

public class CityMap
{
public String getLegend(String[] cityMap, int[] POIs)
{
int i,j;
int[] count = new int[256];
char ch;
StringBuilder sb = new StringBuilder();

for(i=0;i<cityMap.length;i++){
for(j=0;j<cityMap[i].length();j++){
ch= cityMap[i].charAt(j);
if(ch!='.')
count[ch]++;
}
}
for(i=0;i<POIs.length;i++){
for(j=0;j<256;j++){
if(count[j]==POIs[i])
sb.append((char)j);
}
}

return sb.toString();
}

}
//Powered by KawigiEdit 2.1.4 (beta) modified by pivanof!


大神的代码(java):

import java.util.HashMap;

public class CityMap {

public String getLegend(String[] c, int[] p) {
int[] a = new int[26];
for(String s: c)
for(char i: s.toCharArray())
if(i!='.')a[i-'A']++;
HashMap<Integer, String> map = new HashMap<Integer, String>();
for(int i=0; i<a.length;i++)
map.put(a[i], ""+(char)('A'+i));
String o="";
for(int i: p) o+=map.get(i);

return o;
}

}


大神的代码(C++):

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

#define REP(i,n) for(int(i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int(i)=(n)-1;(i)>=0;(i)--)
#define SZ(c) ((int)(c).size())
#define ITER(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define FIND(x,c) ((c).find((x))!=(c).end())

class CityMap
{
public:
string getLegend(vector <string>, vector <int>);
};

string CityMap::getLegend(vector <string> cityMap, vector <int> POIs)
{
string ret="";
int a[30] = {0};
bool b[30] = {0};
REP(i,SZ(cityMap))
{
string temp = cityMap[i];
REP(j,SZ(temp))
{
if(temp[j]!='.')
a[temp[j]-'A']++;
}
}

REP(i,SZ(POIs))
{
int j;
for(j=0 ; j<26 ; j++)
if(a[j]==POIs[i] && !b[j])
{
ret+='A'+j;
b[j]=true;
break;
}
}

return ret;
}

//Powered by [KawigiEdit] 2.0!


分析:

  算法:数数

  对比:

    1.C++版的大神和我做得差不多。

    2.JAVA版的大神灵活地利用了HashMap,比较有意思,学习了哈。然后,这里明明可以不用StringBuilder的。

    3.从空间复杂度的角度来考虑的话,最好还是申请长度是26的数组。虽然长度是256的时候真的很方便啊,尤其是大小写都存在的时候。

  总结:

    HashMap还是很不错的,学习了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: