计算字符串中含有的不同字符的个数
编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不做统计。多个相同的字符只计算一次。
例如,对于字符串abaca而言,有a,b,c三种不同的字符,因此输出3。 数据范围:1 <= n <= 3
输入描述
输入一行没有空格的字符串
输出描述
输入字符串中范围在(0~127,包括0和127)字符的种数。
示例
输入:abc
输出:3
输入:aaa
输出1
思路
使用set集合,将字符串中的字符一个一个插入到set集合中。(set集合特性:set中的各元素各不相同,且会按照元素从小到大进行排序),最后用size()函数可得到集合中元素的数目。
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
getline(cin,a); //读取一行字符串
set<char> s; //定义一个set
for(int i=0; i<a.size(); i++)
s.insert(a[i]); //将单个字符串插入set中
cout<<s.size();
return 0;
}
从键盘输入两个数字n,m,求解m和n的最小公倍数。
几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。
比如求45和30的最小公倍数。45=3×3×5,30=2×3×5,所以最小公倍数为2×3×3*×5=90
思路
最小公倍数即a,b的公共倍数中最小的一个。可以从a,b中最大的数开始,++,进行枚举,直到出现一个既能整除a又能整除b的数,即为最小公倍数。
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,i;
cin>>a>>b;
for(i=max(a,b); ; i++){
if(i%a==0 && i%b==0)
break; //找到最小公倍数后,跳出循环
}
cout<<i;
return 0;
}
小结
-
当需要存储的元素不能重复时,可考虑用set集合。
-
定义:set<类型> s;
-
头文件:set。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情