day35【题目】右旋字符串
1.题目描述
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。
例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。
2.题解
2.1c++
先整体翻转再局部翻转
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
int main(){
string s;
int k;
cin>>k;
cin>>s;
int length=s.size();
reverse(s.begin(),s.end());
reverse(s.begin(),s.begin()+k);
reverse(s.begin()+k,s.end());
cout<<s;
return 0;
}
先局部翻转再整体翻转
#include<iostream>
#include<string>
#include <algorithm>
using namespace std;
int main(){
string s;
int k;
cin>>k;
cin>>s;
int length=s.size();
reverse(s.begin(),s.end()-k);
reverse(s.end()-k,s.end());
reverse(s.begin(),s.end());
cout<<s;
return 0;
}
使用库函数substr
#include <iostream>
#include <string>
using namespace std;
string rotateString(string s, int k) {
int n = s.length();
if (n == 0) return s;
// 对 k 取模,避免不必要的旋转
k = k % n;
// 如果 k 为 0,则直接返回原字符串
if (k == 0) return s;
// 将后 k 个字符移到前面
return s.substr(n - k) + s.substr(0, n - k);
}
int main() {
string s;
int k;
cin>>k;
cin>>s;
string result = rotateString(s, k);
cout << result << endl; // 输出 "fgabcde"
return 0;
}
2.2python
切片操作(1)
k=int(input())
s=input()
s=s[len(s)-k:]+s[:len(s)-k]
print(s)
切片操作(2)
k=int(input())
s=input()
print(s[-k:]+s[:-k])
s[-k:]
表示从字符串末尾向前数的第k
个字符到末尾的所有字符。s[:-k]
表示从字符串开头到倒数第k
个字符之前的所有字符。
ok了,就到这里叭~~~
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!