题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
时间限制:1秒空间限制:32768K
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。
输入例子:
abc
输出例子:
3 解题的思路: (1)使用for循环语句,用字符串的第一个字符作为标本,从字符串的第二个字符开始比较; (2)在比较的过程中,若不同则进行下一次比较,若相同则将字符串,则将该为后的字符一次向前移动一位, 覆盖掉该相同的字符; (3)最重要的是在移动字符串后应该将循环变量自减1,重新比较,确定该字符串中确实没有该字符。 源代码如下: #include<stdio.h> #include<string.h> int main() { char str[1000]={0}; gets(str); int len=strlen(str); for(int i=0;i<len;i++) { for(int j=i+1;j<len;j++) { if(str[i]==str[j]) { for(int m=j;j<len;j++) { str[j]=str[j+1]; if(j==len-1) i--; } len--; } } } printf("%d",len); return 0; } 大神的代码如下:for
(
int
i=0;i<=127;i++)
if
(b.find(i)!=string::npos)
count++;