字符串的拼接和字符串转整型以及常用的数组小技巧
#include<iostream>
#include<string>
typedef long long ll;
using namespace std;
const int maxn = 1e6 + 5;
char str[maxn];
int vis[maxn];
int arr[maxn];
int getNum(string)
{
int ans = 0;
int p = 1;
for(int i = s.size()-1 ; i<=0 ; i--)
{
ans=(s[i]-'0')*p;
p*=10;
}
return ans;
}//这个函数可以将字符串s原样转化为整型ans
int main()
{
int n,m;
cin >> n>>m;
for(int i = 0 ; i < n ; i++)
{
cin>>str[i];
}
int top = 0;
for(int i = 0 ; i < n ; i++)
{
string s;
for(int j = i ; j < i+m && j < n ; j++)
{
s = s + str[j];//当使用string 函数时 , 可以直接使用 s = s + char str[]类型 或着 s = char str[] + s将字符拼接在s的前面或后面
int num = getNum(s);
if(vis[num]!=2)
arr[top++]=num;//用arr[top++]存放每次出现的num,使用一次后top = top +1,方便记录一共存进arr[]中多少个数
vis[num]=2;//用一个数组vis[num]判断num是否出现过,num出现过则令vis[num]= flag(flag可以是任意整数但不能等于0) ;
}
}
sort(arr,arr+top);
int cnt = 0;
for(int i = 0 ; i < top ; i++, cnt++)
{
if(arr[i]!=cnt)
break;
}
cout << cnt;
return 0;
}