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