2012-11-14 133 views
-2

如果我有一个包含*的s字符串,我想查找这个字符串中3星的位置。除了经历一个循环并通过char检查char之外,最好/更有效的方法是什么?在C字符串中查找位置

感谢

+1

没有别的办法由炭炭检查,导致该字符串进行排序。 –

+0

一种方法是使用信息论,如果找到星号的概率取决于其他字符。 –

回答

1

你可能想要做搜索与strchr。既然你想要角色的第三个实例,你仍然可以在循环中执行它。

这是否会比自己编写一个循环更高效,可能会面临一些问题,但它可能不会更慢,而且任何人都可以更清楚地阅读代码。

+0

这是一样的,它会按字符搜索字符... –

+0

@AlbertoBonsanto:它会按字符搜索字符,但可能不一样。举个例子,在x86上,一些编译器使用'rep scasb'来实现它,(这取决于具体的处理器)通常比正常循环快20-30%。不管怎样(O(N)),它都有相同的算法复杂度是不可避免的。 –

1

C字符串实际上是字符数组,所以如果你想找到任何字符的位置,那么你将不得不遍历整个数组,并返回特定的位置char。但是阵列的索引从位置0开始。

找到一个字符现在的位置

int str_chr_pos(const char *s,char c) 
{ 
for(i=0;s[i]!='\0';i++) 
    if(c == s[i]) 
    return i; // found at position i 
return -1; //-1 means not found and check the returned value in the calling environment 
} 
相关问题