携程校招实习第二题

题目同leetcode25,链表按k分组进行翻转,最后不够k的保持不变。
昨晚一直卡8.3%,后来才发现按string一个个字符去处理时,没有注意到可能出现十位数、百位数的可能,所以还是老老实实按","分割来做
吐槽一下C++没有split真的好难受
PS:顺便吐槽一下携程整的全是输入输出,佛

#include 
using namespace std;

int main(){
    string s;
    cin >> s;
    s = s.substr(1,s.size()-2);
    char buf[100];
    sscanf(s.c_str(),"%s",buf);
    const char *d = ",";
    char *p = strtok(buf,d);
    vector<string> word;
    while(p != NULL){
        string s1 = p;
        word.push_back(s1);
        //cout << p << endl;
        p = strtok(NULL,d);
    }
    //for(int i = 0;i < word.size();i ++) cout << word[i] << " ";
    int k;
    cin >> k;
    int pos = 0;
    while(pos <= word.size()-k && k > 1 && k <= word.size()){
        reverse(word.begin()+pos,word.begin()+pos+k);
        pos += k;
    }
    cout << "[";
    for(int i = 0;i < word.size();i ++){
        cout << word[i];
        if(i < word.size() - 1) cout << ",";
    }
    cout << "]" << endl;
    return 0;
}

样例输入
[1,2,3,4]
2
输出
[2,1,4,3]

样例输入
[123,5,66,78,9,5,4,11]
3
输出
[66,5,123,5,9,78,4,11]

你可能感兴趣的:(携程校招实习第二题)