3.计算字符串中含有的不同字符的个数
思路:
类似哈希表,先创建一个长度为128的数组ASC,初始化全为0.用string储存输入的字符串,把string看做数组,顺序读取各个单元内的字符,按照对应的ASCll查ASC数组,若ASC数组对应单元为0,则赋值为1;
读完整个string后,扫描asc数组,其中1的个数即为不同字符数。
代码:
int main()
{
int ASC[128];
for (int i = 0; i <= 127; i++)
ASC[i] = 0;
string s;
cin >> s;
int len = s.length();
for (int i = 0; i < len; i++)
{
int num = (int)s[i];
if (ASC[num] == 0)
ASC[num] = 1;
}
int zifunum = 0;
for (int i = 0; i <= 127; i++)
if (ASC[i] == 1)
zifunum++;
cout << zifunum << endl;
system("pause");
}
验证正确
4、从键盘输入两个数字n,m,求解m和n的最小公倍数
思路:
利用公式mn之积等于两数的最大公约数和最小公倍数之积,转而求最大公约数,利用辗转相除法递归求出最大公约数,再求解
int maxYue(int M, int min)
{
int i = M % min;
if (i == 0)
return min;
else return max(min, i);
}
int main()
{
int m = 0, n = 0;
cin >> m >> n;
int M = m > n ? m : n;
int min = m < n ? m : n;
int a = maxYue(M, min);
cout << (m * n) / a << endl;
system("pause");
}
测试成功