- Factorial
字符串操作
- 2024-12-1 18:12:46 @
#include<bits/stdc++.h>
using namespace std;
string s[30];
bool Isnum(string k){//??????0~99999???
int len=k.size();
if(len>5) return 0;
for(int i=0;i<len;i++){
if(k[i]<'0'||k[i]>'9') return 0;
}
return 1;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){//??n????????????
cin>>s[i];
}
string a;
while(getline(cin,a)){//????????????
if(a=="over") break;
a=" "+a;
int t=0;
stack<string> st;
for(int i=a.size()-1;i>=0;i--){
if(a[i]==' '){
string b=a.substr(i+1,t);
if(b=="copy"){//copy???????,???????????
int x1=stoi(st.top());
st.pop();
int x2=stoi(st.top());
st.pop();
int x3=stoi(st.top());
st.pop();
st.push(s[x1].substr(x2,x3));
}else if(b=="add"){
string x1=st.top();
st.pop();
string x2=st.top();
st.pop();
if(Isnum(x1)&&Isnum(x2)){
st.push(to_string(stoi(x1)+stoi(x2)));
}else{
st.push(x1+x2);
}
}else if(b=="find"){
string x1=st.top();
st.pop();
int x2=stoi(st.top());
st.pop();
int pos=s[x2].find(x1);
if(pos==-1){
st.push(to_string(s[x2].size()));
}else{
st.push(to_string(pos));
}
}else if(b=="rfind"){
string x1=st.top();
st.pop();
int x2=stoi(st.top());
st.pop();
int pos=s[x2].rfind(x1);
if(pos==-1){
st.push(to_string(s[x2].size()));
}else{
st.push(to_string(pos));
}
}else if(b=="insert"){
string x1=st.top();
st.pop();
int x2=stoi(st.top());
st.pop();
int x3=stoi(st.top());
st.pop();
s[x2].insert(x3,x1);
}else if(b=="reset"){
string x1=st.top();
st.pop();
int x2=stoi(st.top());
st.pop();
s[x2]=x1;
}else if(b=="print"){
int x1=stoi(st.top());
st.pop();
cout<<s[x1]<<"\n";
}else if(b=="printall"){
for(int i=1;i<=n;i++){
cout<<s[i]<<"\n";
}
}else{
st.push(b);
}
t=0;
}else{
t++;
}
}
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 21
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 170
- 已通过
- 43
- 上传者