利用 Concat、Len、Sub 和 Equal 四种基本运算写算法

来源:百度知道 编辑:UC知道 时间:2024/07/07 19:44:17
已知串 s 和 t ,试求由所有包含在 s 中而不包含在 t 中的字符构成的新串 r(字符不重复),以及 r 中每个字符在 s 中第一次出现的位置。利用 Concat、Len、Sub 和 Equal 四种基本运算。

我只用了Len和Sub,不知道满足你的要求不?

#define Len strlen
#define Sub strchr

void main()
{
char *s = "show me the money.";
char *t = "give me five!";
char dst[256];
int pos[256];
int n = 0;
int i, len = Len(s);

memset(pos, -1, 256 * sizeof(int));
for (i = 0; i < len; i++)
{
if (pos[s[i]] == -1 && Sub(t, s[i]) == NULL)
{
pos[s[i]] = i;
dst[n++] = s[i];
}
}
dst[n] = '\0';

printf("dst: %s\n", dst);

for (i = 0; i < n; i++)
{
printf("%c: %d\n", dst[i], pos[dst[i]]);
}
}