题目链接

reverse函数

注意,我卡在80%卡了很久,主要是vector反转的时候越界了,我开始想着不可能越界的,以为是输入的时候有问题,后来改了一下反转的地方,终于过了。真的是代码不规范,bug卡一年。

#include<bits/stdc++.h>
using namespace std;
int k=0;
vector<int> v;

int main(){
    string str;
    getline(cin, str);
    int t=0;

    for(int i = 0; i <= str.size(); i++){
        if(str[i] == ' ' || i == str.size()){
            if(t!=0) v.push_back(t);
            t = 0;
        }else{
            t = t * 10 + str[i] - '0'; 
        }
    }
    cin>>k;
    if(v.size()==0){ //数组长度为0 
        cout<<endl;
        return 0;
    }
    if(k!=1){  //间隔为非1反转 
        for(int i = 0; i <v.size(); i+=k){
            if(i+k <= v.size())
                reverse(v.begin()+i, v.begin()+i+k);
        }
    }

    for(int i = 0; i < v.size(); i++){
        cout<<v[i];
        if(i!=v.size()-1) cout<<" ";
        else cout<<endl;
    }
    return 0;
}