gpt4 book ai didi

c++ - 比较两个字符串时,如何在不使用类或库的情况下找到不在字符串数组中的第一个字符?

转载 作者:行者123 更新时间:2023-11-30 03:14:27 26 4
gpt4 key购买 nike

我正在尝试比较两个字符串数组,但不允许使用类或库来提供帮助。

我遇到的问题是,如果一个字符串超过一个字符,那么它会再次比较整个字符串,即使它已经检查了第一个字符串。

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

关于c++ - 比较两个字符串时,如何在不使用类或库的情况下找到不在字符串数组中的第一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57848253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com