题目的主要信息:

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

方法一:

输入字符串str和整数k,利用函数substr输出前k个字符。 alt 具体做法:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    int k;
    while(cin>>str>>k){//输入字符串和k
        string sub_str = str.substr(0,k);
        cout<<sub_str<<endl;//输出前k个字符
    }
}

复杂度分析:

  • 时间复杂度:O(k)O(k),substr函数的时间复杂度为O(k)O(k)
  • 空间复杂度:O(1)O(1),只用了常数空间。

方法二:

输入字符串str和整数k,利用for循环遍历一遍字符串,逐个输出字符,直到遍历完前k个字符就停止遍历。

具体做法:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    int k;
    while(cin>>str>>k){//输入字符串和k
        for(int i = 0;i < k;i++){//遍历一遍字符串,输出前k个字符
            cout<<str[i];
        }
        cout<<endl;
    }
}

复杂度分析:

  • 时间复杂度:O(k)O(k),只遍历了前k个字符,for循环的时间复杂度为O(k)O(k)
  • 空间复杂度:O(1)O(1),只用了常数空间。