我如何只打印出参数中以前未出现的字符?

时间:2018-11-07 06:29:25

标签: c

我正在尝试找出一种只打印字符而不会在C语言中出现重复字符的方法。我们将提供任何帮助。

例如,如果我输入“ Hello”,我希望返回“ Helo”。

我当前的代码只是打印出传入的参数:

#include <stdio.h>

int     main(int argc, char **argv)
{
    int i;

    i = 0;
    while (argv[1][i] != '\0')
    {
        putchar(argv[1][i]);
        i++;
    }
    return (0);
}

编辑:最好不使用任何其他功能/ #includes的

2 个答案:

答案 0 :(得分:1)

您可以尝试一下。您需要一个长度为max possible ascii code的数组来处理 seen 字符。希望这会有所帮助。

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

int main(int argc, char *argv[]) {

    int * seen = calloc(256, sizeof(char));

    if (argv[1] == NULL) {

        printf("No argument.\n");

        return 0;
    }

    for (int i = 0 ; i < strlen(argv[1]) ; i++) {

        if (seen[argv[1][i]] != 1) {

            seen[argv[1][i]] = 1;

            putchar(argv[1][i]);
        }
    }

    free(seen);
}

答案 1 :(得分:-1)

您可以这样做:

from eh.models import User, Country


user = User()
user.save()

print(user.country_count)
# 0

countries = (Country.objects.create() for i in range(10))

for c in countries:
    user.countries.add(c)
    print(user.country_count)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

user.countries.remove(user.countries.first())
print(user.country_count)
# 9

user.countries.clear()
print(user.country_count)
# 0