getline具体用法:
1、函数形式
getline ( cin,字符串类型:变量名);//默认以换行符结束
getline (cin, 字符串类型:变量名, ‘指定的结束符’); //指定换行结束符
2注意事项:
1)如果在使用getline()之前有使用scanf()或cin读取数据,那么需要用getline()将前面的换行符读取,再使用getline()。
2)getline()这个函数是可以读取空格,遇到换行符或者EOF结束,但是不读取换行符的。
3)当以指定的结束符(例:’!’)作为结束符时,’!’以及’!’后面的字符就不再读取。
4)经常需要将getline()与while使用
在这个例子中,逗号运算符的作用就是将最后一个式子作为判定的条件,即while判断的是str!=”#”这个条件,只有当输入到str的为#键时,循环才会结束。
erase具体用法:
erase(开始位置i,删除长度len); 删除从i开始的n个字符(包括i位置)
insert具体用法:
insert(插入位置i,插入字符串s);在字符串的第i个位置插入s。
棋盘从左往右分成 N 个格子。 棋盘上有且仅有 1 只白色棋子 (‘W’表示白旗) 和零个或多个黑色棋子 (‘B’表示黑旗)。在游戏开始时,白棋放置在棋盘的第 1 个格子上,黑棋放置在其他格子上,一个棋子占据一个格子。没有棋子的格子为空(用‘-’表示)。
FJ 然后开始移动白棋,他的每一步都可以做以下两件事之一(不能做其他事):
1、如果白旗的右邻居格子为空,FJ 会将白棋向右移动一个格子。
2、如果白旗的右邻居格子是黑棋,且该黑棋的右邻居为空,那么 FJ 会将白棋移动到该黑棋的右邻居。
FJ 一直重复上述操作,直到不能移动为止。
给定棋盘的初始状态,请输出游戏的最终状态。
输入格式
一个长度不超过 50 的字符串 S,表示棋盘的初始状态。‘W’表示白旗,‘B’表示黑旗,-’表示空格子。
输出格式
一个字符串,表示棋盘的最终状态。
输入/输出例子1
输入:
WB-B-B-
输出:
-B-B-BW
输入/输出例子2
输入:
W--BB---
输出:
--WBB---
输入/输出例子3
输入:
W
输出:
W
输入/输出例子4
输入:
W-B--B---BB-
输出:
--B--B--WBB-
#include<bits/stdc++.h>
using namespace std;
int main() {
string board;
cin>>board;
int n=board.length();
int w=0;
for(int i=0;i<n;i++){
if(board[i]=='W'){
w=i;
break;
}
}
while(w<n-1){
if(board[w+1]=='-'){
swap(board[w],board[w+1]);
w++;
}
else if(w<n-2&&board[w+1]=='B'&&board[w+2]=='-'){
swap(board[w], board[w+2]);
w+=2;
}
else break;
}
cout<<board;
return 0;
}
晨晨刚上幼儿园,对字母很感兴趣,特别是对‘b’、‘B’、‘m’、‘M’四个字母感觉很亲切,因为这四个字母很像“爸”、“妈”的发音。每次看到一段英文文章,她都要数一数文章里面有多少个上面四个字母。由于她刚学数数,数不准,想让大哥哥、大姐姐帮她数一下,你能帮她吗?
输入格式
一行:输入一段以‘#‘结束的字符串
输出格式
一行:一个整数代表字符串出现了多少个‘b’、‘B’、‘m’、‘M’字母
输入/输出例子1
输入:
Thanks for being there, mom. Happy Mother’s Day.#
输出:
4
样例解释
对于80%的数据,字符串长度小于255;
对于100%的数据,字符串长度小于1000;
#include<bits/stdc++.h>
using namespace std;
int main() {
char str[1000];
cin.getline(str,1000,'#');
int count[26] = {0};
for(int i=0;i<strlen(str);i++){
if(str[i]>='a'&&str[i]<='z'){
count[str[i]-'a']++;
}
else if(str[i]>='A'&&str[i]<='Z'){
count[str[i]-'A']++;
}
}
int s=0;
for(int i=0;i<26;i++){
if(count[i]!=0){
if('a'+i=='b'||'a'+i=='m')s+=count[i];
}
}
cout<<s;
return 0;
}
到了动物园,琦琦开心得跳起来。哗,这里好多动物呀,有老虎,有狮子……,在开心之余,琦琦也不忘妈妈的教导:观察动物时要认真仔细,还要看动物园附上的动物简介呀。
动物的简介原来还有英文版的呢!为了卖弄自己的英文水平,琦琦就告诉妈妈每张动物简介里出现了多少次该动物的名称。注意:琦琦只认识小写字母,而且只要是某部分连续的字母同动物名称完全一样,她就会认为这就是那动物的名称,因此当简介中同时出现了monkeys、smonkey、smonkeys时,她就会说出现了3个猴子的名称。
你能编程完成琦琦的任务吗?
输入格式
第1行为数字n(n<=3000),表示该动物的简介共有n行。
第2行为一个单词,表示琦琦认识的动物名称。
接着是n行,每行为一个长度小于250个字符的字符串,表示动物的简介。
输出格式
输出文件共1行,为简介里出现了多少次琦琦能识别出的动物的单词。
输入/输出例子1
输入:
2
snake
The snake is a long and thin animal.
Snakes have no legs or feet.
输出:
1
#include<bits/stdc++.h>
using namespace std;
int m;
string a;
string b;
int c;
int main(){
cin>>m;
cin>>a;
getline(cin,b);
int lena=a.size();
c=0;
for(int i=0;i<m;i++){
getline(cin,b);
int lenb=b.size();
for(int j=0;j<=lenb-lena;j++){
bool f=true;
for(int k=0;k<lena;k++){
if(b[j+k]!=a[k]){
f=false;
break;
}
}
if(f)c++;
}
}
cout<<c<<endl;
return 0;
}
给你一个字符串s,你可以进行一种操作:选取前i个字母,得到一个前缀,把它翻转。你可以操作任意次,要求你最后得到的字符串是最小的。
当然,为了增加趣味性,我们有一个限制:你依次取的前缀的长度一定要是递增的。
比如:s="BCDAF",你可以先把前3个翻转,得到"DCBAF",然后把前4个翻转,得到"ABCDF"。
输入格式
第一行为一个字符串s
输出格式
你得到的最小字符串。
输入/输出例子1
输入:
ABBA
输出:
AABB
输入/输出例子2
输入:
ACAB
输出:
AACB
样例解释
s的长度在1到50之间。
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
cin>>s;
for(int i=1;i<s.size();i++){
if(s[0]>=s[i]){
s=s[i]+s;
s.erase(i+1,1);
}
}
cout<<s;
return 0;
}