如何将字符串中的每个字符设置为整数?这是我编写哈希函数时必须做的第一件事.我必须将字符串中的每个字符设置为一个整数,以便我可以将它们的值相加.请帮忙!它是这样的吗?
int hashCode(string s)
{
int Sum = 0;
for(int i=0; i<strlen(s); i++)
{
Sum += (int)s[i];
}
return Sum;
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*fin 13
是 - 在C和C++中,char只是一个小整数类型(通常范围从-128到+127).当你对它进行数学运算时,它通常会被int自动转换,所以你甚至不需要你的演员阵容.
顺便说一句,你真的不想strlen(s)在你的for循环中使用停止条件.至少在大多数编译器中,这会强制它在strlen(s)每次迭代时重新进行评估,因此您的线性算法恰好变为二次方程式.
size_t len = strlen(s);
for (int i=0; i<len; i++)
Sum += s[i];
Run Code Online (Sandbox Code Playgroud)
或者,如果s实际上是a std::string,则参数类型建议:
for (int i=0; i<s.size(); i++)
Sum += s[i];
Run Code Online (Sandbox Code Playgroud)
还有一种可能性:
Sum = std::accumulate(s.begin(), s.end(), 0);
Run Code Online (Sandbox Code Playgroud)