Redian新闻
>
请问我写的这个代码哪可以改进一下
avatar
请问我写的这个代码哪可以改进一下# JobHunting - 待字闺中
d*o
1
用gift card在walmart买的东西,退货是退gift card吗?谢谢。
avatar
g*j
2
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
上面大小测试集都过了,但是总感觉有问题,至少感觉很臃肿,请问我写的这个代码哪
可以改进一下?
int getHashcode(string s) {

int code = 2166136261U;

sort(s.begin(), s.end());

for(int i = 0 ; i < s.length(); i++) {
code = code ^ (s[i]);
code = code * 16777619;
}

return code;
}
class Solution {
public:
vector anagrams(vector &strs) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector results;

if(strs.size() <= 1) return results;

map myMap;

map myCode;
for(int i = 0; i < strs.size(); i++) {
myCode[strs[i]] = getHashcode(strs[i]);
}
for(int i = 0; i < strs.size(); i++) {
myMap[myCode[strs[i]]] = 0;
}

for(int i = 0; i < strs.size(); i++) {
myMap[myCode[strs[i]]]++;
}

for(int i = 0; i < strs.size(); i++) {
if(myMap[myCode[strs[i]]] > 1 ) {
results.push_back(strs[i]);
}
}

return results;

}
};
avatar
E*r
3
是的

【在 d*******o 的大作中提到】
: 用gift card在walmart买的东西,退货是退gift card吗?谢谢。
avatar
r*s
4
code = code ^ (s[i]);
code = code * 16777619;
=>
code ^= s[i];
code *= 16777619;
能省几个字符……
avatar
D*9
5
not really. Small amount, say less than $10, they will refund you cash.

【在 d*******o 的大作中提到】
: 用gift card在walmart买的东西,退货是退gift card吗?谢谢。
avatar
g*j
6
what about the body? I used four loops, any way to reduce some?
and also I used two maps, is one enough?

【在 r*****s 的大作中提到】
: code = code ^ (s[i]);
: code = code * 16777619;
: =>
: code ^= s[i];
: code *= 16777619;
: 能省几个字符……

avatar
i*4
7
paid half gc, half cc, the cs refunded all back to cc, sweet~~
avatar
r*h
8
用一个multimap
左边是一个string,右边是对应的字符串的index
因为所有anagram,他们sort后的字符串都是一样的。
第一轮loop,sort每个string,按照sort的结果加入到multimap里
第二轮遍历multimap,输出字符串
multimap mmp;
multimap::iterator it;
vector results;
string tmp;
for(int i=0; itmp = strs[i];
sort(tmp.begin(), tmp.end());
mmp.insert(std::pair(tmp, i));
}
for(it=mmp.begin(); it!=mmp.end(); it++){
results.push_back(strs[(*it).second]);
}
return results;
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。