获得字符顺序总和的最快方法是什么?

时间:2014-04-10 11:15:59

标签: c++

我正在尝试找到以字符串

获取字符顺序总和的最快方法

例如,如果字符串包含:

ABAACA;

然后字符A的总和将是:

(A=0)+(A=2)+(A=3)+(A=5)=10;

 A=10;

我知道某种方式,但这需要太长时间,所以请你告诉我如何获得最快的金额?

4 个答案:

答案 0 :(得分:1)

我看到用C ++做的最快的方式(因为没有其他描述你的问题),涉及并行处理:

  1. 并行扫描和就地索引
  2. Reduction
  3. 虽然它可能不是你想要的。

答案 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;
}

如果在编译时可以知道字符串的长度,那么你可以设想将该值模板化并让编译器为你量化循环。