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

大一寒假集训(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值