字符串的拼接和字符串转整型以及常用的数组小技巧

#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;

}

posted @ 2021-11-16 19:11  ganl啦  阅读(106)  评论(0)    收藏  举报