簡體   English   中英

比較兩個字符串時,如何在不使用類或庫的情況下不找到字符串數組中的第一個字符?

[英]How do you find first character NOT in string array without using classes or libraries when comparing two strings?

我正在嘗試比較兩個字符串數組,但不允許使用類或庫來提供幫助。

我遇到的問題是,如果一個字符串超過一個字符,那么即使已經檢查了第一個字符串,它也會將整個字符串再次進行比較。

char *find_first_not_in_the_set(char *str, const char *set)
{
    for(int i = 0; *(str + i) != '\0'; i++)
    {
        for(int j = 0; *(set + j) != '\0'; j++)
        {
            if(str[i] != set[j])  
            {
                return &(str[i]);
            }
        }
    }
    return NULL;
}

如果是“ Hello World!” 是第一個字符串,第二個字符串是“ He”。 程序應該返回l ,但是它返回H因為它仍然檢查第一個字符。

我寧願使用這個:

bool matrix[256] = {0};
int length = strlen(set);
// remember all characters we have in the 'set'
for( int i=0; i<length; i++) matrix[set[i] & 0xFF] = 1;

length = strlen(str);
// now check the characters from 'str'
for( int i=0; i<length; i++) {
    if( ! matrix[str[i] & 0xFF] ) {
        printf( "Found: %c", str[i] );
        break;
    }
}

對於str中的每個字符,您的代碼都會檢查它是否存在於set的每個位置上。因此,當i = 0時,將'H'與set [0]比較,即j = 0時為'H'。但是當j = 1,將'H'與'e'進行比較,由於i仍為0,因此該函數返回str [0]。

如果僅使用一個循環並檢查str [i]!= set [i],則將解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM