计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入:abcd
输出:4
例如2:
输入:abcdee
输出:5
方法一:set(注意包含字母大小写);测试不通过,时间太长
#include <stdlib.h> #include "oj.h" #include<set> using namespace std; /* 功能: 输入:字符串 输出:无 返回:字符个数 */ int GetCount( char* strInValue ) { if (NULL== strInValue) { return -1; } int num[128]; set<char> s; while (*strInValue!='\0') { if (*strInValue>=0&& *strInValue<=127) { s.insert(*strInValue); } } return s.size(); }
方法二:
#include <stdlib.h> #include "oj.h" #include <string.h> /* 功能: 输入:字符串 输出:无 返回:字符个数 */ int GetCount( char* strInValue ) { if (NULL== strInValue) { return -1; } int char_num = 0; int i = 0; char *temp = strInValue; char *rpt; while (*temp!='\0') { if (*temp >= 0 && *temp <= 127) { rpt = (char*)memchr(strInValue, *temp, (i + 1)); if ((rpt - strInValue) == i) char_num++; } temp++; i++; } return char_num; }