题解 CF20A 【BerOS file system】
对于此题,我的心近乎崩溃
这道题,注意点没有什么,相信大佬们是可以自己写出来的 我是蒟蒻,那我是怎么写出来的啊
好了,废话少说,开始进入正题
这道题,首先我想到的是字符串的 erase 函数,一边运行一边删除多余的字符
但是……
在删除的同时,串长也会变化啊!!( 绝望
所以,在直接删的情况下:
for 不能用……
while 不能用……
do while 不能用……
这里,我又想到了……
正难则反
不减掉字符,就可以再定义一个字符串 ( 空串 ) 把满足的字符加进字符串里呀!!
这样,我们又可以得出满足字符的条件:
· 上一个字符不是 ' / ' ,但是这一个字符是 ' / '
· 数字
最后,如果最后一个字符是 ' / ' ,就删去它
所以,我们得出了核心代码:
ans+=s[0];
for(i=1;i<len;i++){
if((s[i-1]!='/'&&s[i]=='/')||s[i]!='/')
ans+=s[i],k++;
}
if(ans[k]=='/')
ans.erase(k);
很简单吧?
但是,你把代码放上去测,明显地……
WA辣!
证据:
所以,我们留意到了特殊情况:
如果你输入了
/////
出来的是
nothing?
What ? 没有结果?
我瞬间认识到了:
我需要特判!!
所以,改进代码如下:
if(ans=="")//如果全是 '/' ,删完了的话
cout<<"/";
else
cout<<ans;
就这样结束了?
好像是的
所以,放出代码最终版:
#include<bits/stdc++.h>
using namespace std;//本蒟蒻总会写
int i,len,k;
string s,ans;
int main(){
getline(cin,s);
len=s.size();
ans+=s[0];
for(i=1;i<len;i++){
if((s[i-1]!='/'&&s[i]=='/')||s[i]!='/')
ans+=s[i],k++;//记下ans有多少位
}
if(ans[k]=='/')
ans.erase(k);//erase函数,温习一下
if(ans=="")
cout<<"/";
else
cout<<ans;
return 0;
}
OI 加油!洛谷冲鸭!
题解 CF20A 【BerOS file system】的更多相关文章
- Code Forces 20A BerOS file system
A. BerOS file system time limit per test 2 seconds memory limit per test 64 megabytes input standard ...
- BerOS file system
The new operating system BerOS has a nice feature. It is possible to use any number of characters '/ ...
- CDOJ_327 BerOS file system
原题地址:http://acm.uestc.edu.cn/#/problem/show/327 The new operating system BerOS has a nice feature. I ...
- BerOS File Suggestion(字符串匹配map)
BerOS File Suggestion(stl-map应用) Polycarp is working on a new operating system called BerOS. He asks ...
- Design and Implementation of the Sun Network File System
Introduction The network file system(NFS) is a client/service application that provides shared file ...
- 乌版图 read-only file system
今天在启动虚拟机的时候,运行命令svn up的时候,提示lock,并且read-only file system,这个....我是小白啊,怎么办?前辈在专心写代码,不好打扰,果断找度娘啊 于是乎,折腾 ...
- File system needs to be upgraded. You have version null and I want version 7
安装hbase时候报错: File system needs to be upgraded. You have version null and I want version 7 注: 我安装的hba ...
- Linux系统启动错误 contains a file system with errors, check forced解决方法
/dev/sda1 contains a file system with errors, check forced./dev/sda1: Inodes that were part of a cor ...
- Linux 执行partprobe命令时遇到Unable to open /dev/sr0 read-write (Read-only file system)
在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息"Warning: Unable to open ...
随机推荐
- C#网络编程学习(6)---序列化和反序列化
1.什么是序列化和反序列化 当客户端和服务器进行远程连接时,互相可以发送各种类型的数据.但都要先把这些对象转换为字节序列,才能在网络上进行传输. 序列化:就是发送方 把对象转换为字节序列的过程. 反序 ...
- 洛谷P1318 积水面积
题目描述 一组正整数,分别表示由正方体叠起的柱子的高度.若某高度值为\(x\),表示由\(x\)个正立方的方块迭起(如下图,\(0<=x<=5000\)).找出所有可能积水的地方(图中蓝色 ...
- DropDownList 不能绑定多个值错误!
ListItem item = new ListItem("--请选择--",""); ddlstPurchaser.Items.Insert(0, item) ...
- vs获取最新时,提示签出解决方案
项目中的文件有被意外去掉了只读属性的. VSS中签入状态的文件在本地都有只读属性. 如果VSS中是签入状态,而对应的本机文件没有只读状态,在获取最新版本的时候,就会弹出一个对话框提示签出还是用VSS中 ...
- poj2186-Popular Cows(强连通分支)
有N(N<=10000)头牛,每头牛都想成为most poluler的牛,给出M(M<=50000)个关系,如(1,2)代表1欢迎2,关系可以传递,但是不可以相互,即1欢迎2不代表2欢迎1 ...
- <邮件的反垃圾反病毒>
本章——发送接收邮件的工具为雷鸟 安装 # yum install dovecot-mysql.x86_64 dovecot.x86_64 -y 编辑文件 vim 10-mail.conf mail_ ...
- Day3上
T1 星空[问题描述]你是能看到第一题的friends 呢.——hja点点星空是一张
- Elasticsearch支持的字段类型
es支持下列简单的字段类型: String: string Whole number: byte, short, integer, long Floating point: float, double ...
- 《Head First 设计模式》之装饰者模式——饮料加工
装饰者模式(Decorator) ——动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 特点:建立拥有共同超类的装饰者与被装饰者来实现功能的动态扩展 原则:对扩展开放,对 ...
- 在浏览器地址栏按回车、F5、ctrl+F5刷新页面的区别
url地址栏里敲击enter:这样的刷新,大家可以在firebug里看一下,只有少数的请求会发送出去,而且几乎没有图片的请求,这是因为请求时会先检查本地是不是缓存了请求的图片,如果有缓存而且没有过期( ...