[蓝蓝计算机考研算法]-day2

45 阅读1分钟

计算字符串中含有的不同字符的个数

编写一个函数,计算字符串中含有的不同字符的个数。字符在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 天,点击查看活动详情