题目的主要信息:

  • 输入一个字符串和一个整数k,截取字符串的前k个字符并输出

方法一:遍历

具体做法:

直接遍历字符串,但是我们只遍历从0到k,依次输出每个遍历到的字符即可。

#include<iostream>
#include<string>
using namespace std;

int main(){
    string s;
    int k;
    while(cin >> s >> k){
        for(int i = 0; i < k; i++) //遍历字符串前k个位置
            cout << s[i]; //输出
        cout << endl;
    }
    return 0;
}

复杂度分析:

  • 时间复杂度:O(k)O(k),字符串从0遍历到kk
  • 空间复杂度:O(1)O(1),无额外空间

方法二:库函数

具体做法:

也可以直接调用库函数,从0开始截断k位输出。

alt

#include<iostream>
#include<string>
using namespace std;

int main(){
    string s;
    int k;
    while(cin >> s >> k){
        cout << s.substr(0, k) << endl; //直接截取输出从0开始的前k部分
    }
    return 0;
}

复杂度分析:

  • 时间复杂度:O(k)O(k),截断函数的复杂度为子串长度
  • 空间复杂度:O(1)O(1),无额外空间