day35【题目】右旋字符串

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了,就到这里叭~~~

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值