如何删除给定字符串中的前N个字符并将其追加到最后。例如,如果我们有
abracadabra
我们将前4个字符移到最后然后我们应该
cadabraabra
答案 0 :(得分:5)
不是从前面掏出昂贵的东西,而是另一种方式。我们可以rotate到位,这是一个单独的O(N)操作。在这种情况下,您想要向左旋转,以便我们使用
std::string text = "abracadabra";
std::rotate(text.begin(), text.begin() + N, text.end());
在上面的示例中,如果N
为4,那么您将获得
cadabraabra
答案 1 :(得分:1)
你可以尝试一个老式的双循环,一次一个字符。
#include "string.h"
#include "stdio.h"
int main() {
char ex_string[] = "abracadabra";
int pos = 4;
char a;
int i, j;
size_t length = strlen(ex_string);
for (j = 0; j < pos; j++) {
a = ex_string[0];
for (i = 0; i < length - 1; i++) {
ex_string[i] = ex_string[i + 1];
}
ex_string[length-1]=a;
}
printf("%s", ex_string);
}
答案 2 :(得分:0)
string str = "abracadabra" //lets say
int n;
cin>>n;
string temp;
str.cpy(temp,0,n-1);
str.earse(str.begin(),str.begin()+n-1);
str+=temp;
参考
答案 3 :(得分:0)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str;
cin >> str;
int number;
cin >> number;
string erasedString = str;
string remainingString = str.substr(number + 1, strlen(str));
erasedString.erase(0, number);
return 0;
}