【发布时间】:2020-10-13 19:31:40
【问题描述】:
所以最近programming contest有这个问题。 我们在那个问题中有一个测试用例
8
11001101
现在我想要的输出是 1 但是这一行
cout << s.erase(0,6) << "\n"
即使我想从 0 到第 6 个索引位置删除元素,也会给出 01。 我应该如何删除从 0 到 6(包括 6)的元素
这里是参考代码
#include <vector>
#include <iostream>
using namespace std;
int main(){
int t; cin >> t;
while(t--){
long n; cin >> n;
string s; cin >> s;
int index_l=0;
int index_r=0;
for(int i=0;i<n;i++){
if(s[i]=='1'){
index_l = i;
break;
}
}
for(int i=s.length(); i > index_l;i--){
if(s[i] == '0'){
index_r = i;
break;
}
}/*
cout << s.length() << "\n";
cout << index_l << " " << index_r << "\n";
*/
if(index_r == 0) cout << s << "\n";
else cout << s.replace(index_l,index_r,"0");
}
return 0;
}
【问题讨论】:
-
你认为“0到6(包括6)”有多少个元素?您是否尝试过使用代码,例如传递不同的参数以查看会发生什么?另外,我在代码中没有看到对
erase的任何调用。 -
7 个元素,我想删除所有 7 个,但该函数只删除 6 个:/