大一寒假集訓(13)(14)---vector ,string【未完待續】

Alita Skywalker發表於2020-12-26

大一寒假集訓(13)—vector

知識點

1.在這裡插入圖片描述
2.在這裡插入圖片描述
3.在這裡插入圖片描述
在這裡插入圖片描述

1.中間數

簡單應用

#include <bits/stdc++.h>
using namespace std;
vector<int>a;
int n,x;
int main()
{
    ios::sync_with_stdio(false);
    while(cin>>n&&n!=0)
    {
        a.push_back(n);
    }
    x=a.size();
    if(x%2==0)
        cout<<a[(x-1)/2]+a[x/2]<<endl;
    else
        cout<<a[(x-1)/2]<<endl;
    return 0;
}


2.鋸齒矩陣

大一寒假集訓(14)—string

知識點

1.定義string的方法:string name
2.一種訪問 string 的方法,就像普通字元陣列一樣操作。
例如: string str= “ abcd “ ;
for(int i = 0; i < str.length(); i++)
printf( “ %c “ ,str[i]); // 輸出 abcd 如果要讀入或者輸出整個字串,一般只能用cin和 cout。如果非要用printf輸出string,則需要用c_str()函式將 string轉換成字元陣列。
例如: string str;
cin>>str;
cout<<str<<endl; printf("%s\n",str.c_str());
3.string 的訪問
另一種訪問string的方法是通過迭代器,主要與insert()、 erase()等函式配合使用。
先定義string迭代器: string::iterator it; 然後就可以通過“*it”來訪問string裡的每一個字元了, 而且string和vector一樣,支援直接對迭代器進行加減某個數 字,如str.begin()+3等。
例如: string str=“abcdefg”;
for(string::iterator it = str.begin()+2;
it != str.end(); it++) printf("%c",*it);//輸出cdef

1.字串合併-string

#include <bits/stdc++.h>
using namespace std;
string a,b;
int main()
{
    while(cin>>a>>b)
        cout<<a+b<<endl;
    return 0;
}


2.迴文字串-string

#include <bits/stdc++.h>
using namespace std;
string a;
int l,n,flag;
int main()
{
    while (cin>>n)
    {
        while(n--)
        {
            flag=0;
            cin>>a;
            l=a.length();
            if(l%2==0)
            {
                for(int i=0;i<l/2;i++)
                {
                    if(a[i]!=a[l-i-1])
                    {
                        flag=1;
                        break;
                    }
                }
            }
            else
            {
                 for(int i=0;i<(l-1)/2;i++)
                {
                    if(a[i]!=a[l-i-1])
                    {
                        flag=1;
                        break;
                    }
                }
            }
            if(flag==1)
                cout<<"NO"<<endl;
            else
                cout<<"YES"<<endl;
        }
    }
    return 0;
}


3.氣球-string-map

#include <bits/stdc++.h>
using namespace std;
map<string,int>q;
map<string,int>::iterator it;
int n,ans;
string ch,s,r;
int main()
{
    while (cin>>n&&n!=0)
    {
        ans=0;
        q.clear();
        while(n--)
        {
            cin>>ch;
            q[ch]++;
        }
        for (it=q.begin();it!=q.end();it++)
        {
            s=(*it).first;
            if(ans<q[s])
            {
                ans=q[s];
                r=s;
            }
        }
        cout<<r<<endl;
    }

    return 0;
}


4.取子字串-string

#include <bits/stdc++.h>
using namespace std;
string ss;
int x,y,l;
int main()
{
    while (cin>>ss)
    {
        cin>>x>>y;
        l=ss.length();
        for (int i=x-1;i<y;i++)
            cout<<ss[i];
        cout<<endl;
        while(l--)
            ss[l]=' ';
    }
    return 0;
}


5.strange string nefu 1019

#include <bits/stdc++.h>
using namespace std;
char s[15];
int cnt[50];
int l,num,k,n,flag;
int main()
{
    while (scanf("%s",s)!=EOF)
    {
        for (int i=1;i<=30;i++)
            cnt[i]=0;
         l=strlen(s);
        num=0;
        if (l<3)
        {
            cout<<"NO"<<endl;
            continue;
        }
        n=0;
        flag=1;
        while (n<l)
        {
            int x=n;
            while (n+1<l&&s[n]==s[n+1])
                n++;
            num++;
            if (cnt[s[n]-'a'+1]) flag=0;
            else cnt[s[n]-'a'+1]=1;
            if (num==1) k=n+1;
            else
            {
                if (n-x+1!=k) flag=0;
            }
            n++;
        }
        if (num!=3||!flag)
        {
            cout<<"NO"<<endl;
        }
        else
        {
            cout<<"YES"<<endl;
        }
    }
    return 0;
}

6.字串處理-string nefu 2132

相關文章