2012-11-14 162 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 
} 
相關問題