c++中怎么判断一个新的字符串是零一字符串的子串
时间: 2024-05-04 13:17:58 浏览: 129
C++字符串中检测特定的字符串
判断一个字符串是否是“零一字符串”的子串,可以按照以下步骤进行:
1. 遍历字符串中的每一个字符,判断该字符是否为 ‘0’ 或 ‘1’。
2. 如果该字符为 ‘0’ 或 ‘1’,则将其与子串中的字符进行比较。
3. 如果匹配成功,则继续比较下一个字符,否则将子串的起始位置向后移动一位,并重新从子串的起始位置开始比较。
4. 如果子串中的所有字符都与字符串中的某个子串匹配成功,则说明该字符串是“零一字符串”的子串。
下面是一个示例代码,实现了上述步骤:
```c
#include <stdio.h>
#include <string.h>
int isZeroOneSubstring(char *str, char *substr) {
int len_str = strlen(str);
int len_substr = strlen(substr);
int i, j;
for (i = 0; i <= len_str - len_substr; i++) {
for (j = 0; j < len_substr; j++) {
if (substr[j] != '0' && substr[j] != '1') {
return 0;
}
if (str[i+j] != substr[j]) {
break;
}
}
if (j == len_substr) {
return 1;
}
}
return 0;
}
int main() {
char str[] = "1010111001001";
char substr1[] = "101";
char substr2[] = "1101";
char substr3[] = "1010";
printf("%s is%s a zero-one substring of %s.\n", substr1, isZeroOneSubstring(str, substr1) ? "" : " not", str);
printf("%s is%s a zero-one substring of %s.\n", substr2, isZeroOneSubstring(str, substr2) ? "" : " not", str);
printf("%s is%s a zero-one substring of %s.\n", substr3, isZeroOneSubstring(str, substr3) ? "" : " not", str);
return 0;
}
```
输出结果为:
```
101 is a zero-one substring of 1010111001001.
1101 is not a zero-one substring of 1010111001001.
1010 is a zero-one substring of 1010111001001.
```
可以看到,输出结果符合预期。
阅读全文