求帮助
  • 板块灌水区
  • 楼主polyoid
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/7/11 20:55
  • 上次更新2024/7/11 22:31:30
查看原帖
求帮助
1333712
polyoid楼主2024/7/11 20:55

题目长这样:把字符串旋转一次的操作等价于把字符串的最后一个字符放到第一个字符的前面。例如,“abcdef”旋转一次后变为“fabcde”。 输入一个字符串,输出字符串旋转k次后的结果。保证k小于字符串的长度。

输入描述

第一行一个字符串,不包含空格。 第二行一个正整数k。

输出描述

旋转k次后的字符串。 我的代码

#include<bits/stdc++.h>
using namespace std;

string rotatestr(const string& s, int k) {
    int n = s.length();
   	k=k%n;
	if (k == 0) {
        return s;
    }
	return s.substr(n - k) + s.substr(0, n - k);
}

int main() {
    string s;
    int k;
    cin >> s;
    cin >> k;
    string r= rotatestr(s, k);
    cout << r<< endl;
    return 0;
}

AC是AC了,但是老师说我的方法太麻烦了,可以只用字符型数组和字符串,不需要用这么多函数。怎么写啊啊啊啊。新手求放过。可以帮帮么,只有思路就行。

2024/7/11 20:55
加载中...