题目大意
实现一个 Terminal,可以新建文件、删除文件、更改文件名、按照时间顺序列出文件。
会输入 n n n 个操作。
题目解法
可以看出题目要求很简单,就是一道纯模拟题目。
n n n 的范围也是很小,不用优化算法。
我这里用最朴素的方法,就是直接用字符串来模拟。用一个变量来存储当前的文件的数量。
这里有下面几点注意一下:
touch
命令在创建文件前要扫描一遍是否有重名的文件,扫到重名就跳出并标记,没扫到再创建;- 处理删除文件时我直接把要删除的文件名的字符串设为空实现的;
ls
命令实现时要判断一下字符串是否为空,否则可能输出了删除的文件。
最后细节看代码。
参考代码
#include<bits/stdc++.h>
using namespace std;
int n,p=1;
string opt,t,tt,z[1001];
bool f=0;
int main()
{
scanf("%d",&n);
while(n--){
cin>>opt;
f=0;
if(opt=="touch"){
cin>>t;
for(int i=1;i<=p;i++){
if(z[i]==t) {
f=1;
break;
}
}
if(f==0) z[p]=t,p++;
}
else if(opt=="rm"){
cin>>t;
for(int i=1;i<=p;i++){
if(z[i]==t) {
z[i]="";
break;
}
}
}
else if(opt=="ls"){
for(int i=1;i<=p;i++){
if(z[i]!="") cout<<z[i]<<"\n";
}
}
else if(opt=="rename"){
cin>>tt>>t;
for(int i=1;i<=p;i++){
if(z[i]==tt) {
z[i]=t;
break;
}
}
}
}
return 0;
}