gpt4 book ai didi

C:如何找出一个字符串中以任意顺序出现一定数量的字符?

转载 作者:行者123 更新时间:2023-12-01 12:08:59 25 4
gpt4 key购买 nike

所以给定的任务是创建一个函数来检查任何字符串 if

  1. 包含“a”、“b”、“c”、“d”和“e”的所有 5 个字母(在任何顺序)和
  2. 字符串“abcde”是给定字符串的子字符串。如果 1 成立(但 2 不成立),则返回 1。如果 1 和 2 都成立,则返回 2。否则,返回 0。

例子:

checkabcde(“someaxbxcxdxemm”) -> 1
checkabcde(“someOtherValue”) -> 0
checkabcde(“xyabcdeping”) -> 2
checkabcde(“someaxuxdxlxammabcde”) -> 2

在我的方法中,我已经能够发现子字符串是“abcde”,但无法确定该字符串是否包含“a”、“b”、“c”、“d”、“e”顺序

int checkabcde(char str[]) {

char str2[] = {
'a',
'b',
'c',
'd',
'e'
};

char str3[5]; //to be filled with elements from str2 when found inconsecutive order

int i, z, x, f;

z = 0; //position for str3
f = 0; //flag for similarity comparison of str2 and str3

for (i = 0; i < strlen(str); i++) {
for (x = 0; x < strlen(str2); x++) {
if (str[i] == str2[x]) {

if ((str[i] == 'a') && (str[i + 1] == 'b') && (str[i + 2] == 'c') && (str[i + 3] == 'd') && (str[i + 4] == 'e')) {
return 2;
} else {

if (str3[z] != str[z - 1]) {
str3[z] = str2[x];
z++;
}

}

}
}
}

for (i = 0; i < 5; i++) {
for (x = 0; x < 5; x++) {
if (str2[i] == str3[x]) {
f++;
}
}
}

if (f == 5) {
return 1;
} else if (f1 == 0) {
return 0;
}
}

编辑:不允许使用指针

最佳答案

  1. 对于 1,您可以使用 f[256]s1 中的所有字符设置 f[ch] = 1 然后检查是否 f[ch] == 1 s2
  2. 中的每个字符
  3. 对于 2,您可以使用 strstr() 参见 http://man7.org/linux/man-pages/man3/strstr.3.html

以下代码可以工作:

#include <stdio.h>
#include <string.h>

int check(const char* s1, const char* s2) {
int f[256];
memset(f, 0, sizeof(f));

// check 1
for (int i = 0; s1[i] != '\0'; ++i)
f[s1[i]] = 1;
for (int i = 0; s2[i] != '\0'; ++i)
if (f[s2[i]] == 0)
return 0;
// check 2
return strstr(s1, s2) == NULL ? 1 : 2;
}

int main(void) {
printf("%d\n", check("someaxbxcxdxemm", "abcde"));
printf("%d\n", check("someOtherValue", "abcde"));
printf("%d\n", check("xyabcdeping", "abcde"));
printf("%d\n", check("someaxuxdxlxammabcde", "abcde"));
return 0;
}

关于C:如何找出一个字符串中以任意顺序出现一定数量的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54081544/

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