我正在尝试找到以字符串
获取字符顺序总和的最快方法例如,如果字符串包含:
ABAACA;
然后字符A的总和将是:
(A=0)+(A=2)+(A=3)+(A=5)=10;
A=10;
我知道某种方式,但这需要太长时间,所以请你告诉我如何获得最快的金额?
答案 0 :(得分:1)
我看到用C ++做的最快的方式(因为没有其他描述你的问题),涉及并行处理:
虽然它可能不是你想要的。
答案 1 :(得分:0)
如果没有并行工具,最快的解决方案就是只访问循环中的每个char并增加总和。
答案 2 :(得分:0)
最快的非并行解决方案:
-go over every char。
- 如果匹配(if(ch=='A')count+=i;
),则增加计数。
没有更快的方法,因为你必须访问每个角色。
无论如何,如果你有一个有效的解决方案,它可能已经是最快的了......
答案 3 :(得分:0)
int count_match ( char* str, int length, char digit )
{
int output = 0;
for ( int index = 0; index < length; ++ index )
output += index & - (str[index] == digit);
return output;
}
如果在编译时可以知道字符串的长度,那么你可以设想将该值模板化并让编译器为你量化循环。