我正在尝试检查字符串是否包含来自不同字符串的特定顺序的元素。
例如:
大字符串:thisiststring
小字符串:hssg
它应该返回 true。
我只知道如何检查字符串是否包含整个其他字符串但不包含部分。这是我现在为检查而编写的代码:
if ([largestring rangeOfString:smallstring].location != NSNotFound) {
printf("contains");
}
我正在尝试检查字符串是否包含来自不同字符串的特定顺序的元素。
例如:
大字符串:thisiststring
小字符串:hssg
它应该返回 true。
我只知道如何检查字符串是否包含整个其他字符串但不包含部分。这是我现在为检查而编写的代码:
if ([largestring rangeOfString:smallstring].location != NSNotFound) {
printf("contains");
}
至少,没有我所知道的内置方法可以做到这一点。您必须遍历小字符串的每个字母并找到与大字符串匹配的第一个字母。
每次找到匹配的字母时,都会循环到下一个小字符串字母,但仅在找到前一个字母后才开始在索引处搜索。
编辑:一些未经测试的伪代码可能有语法错误:
int foundChar = 0;
for (int l = 0; l < strlen(smallstring); l++)
{
bool found = false;
for (; foundChar < strlen(largestring); foundChar++)
{
if (smallstring[l] == largestring[foundChar])
{
// We break here because we found a matching letter.
// Notice that foundChar is still in scope so we preserve
// its value for the next check.
found = true;
foundChar++; // Increment so the next search starts with the next letter.
break;
}
}
// If we get down here, that means we've searched all of the letters
// and found no match, we can result with a failure to find the match.
if (found == false)
{
return false;
}
}
// If we get here, it means every loop resulted in a valid match.
return true;