📜  字符串左旋转右旋转的C++程序(1)

📅  最后修改于: 2023-12-03 15:09:21.750000             🧑  作者: Mango

C++程序示例:字符串左旋转和右旋转

本文将向您介绍如何使用C++编写一个函数,实现字符串的左旋转和右旋转。您可以在自己的程序中使用这个函数,使得字符串的操作更加灵活和高效。

函数介绍

首先,我们要明确函数的定义和功能。下面是一个通用的函数定义:

string rotateString(string str, int k, bool left);

这个函数有3个参数:

  1. str:需要旋转的字符串;
  2. k:旋转的位数;
  3. left:是否进行左旋转。如果为false,则进行右旋转。
示例

下面是示例代码:

#include <iostream>
using namespace std;

string rotateString(string str, int k, bool left)
{
    int len = str.length();
    if (k >= len)
        k %= len;
    if (left)
        return str.substr(k) + str.substr(0, k);
    else
        return str.substr(len - k) + str.substr(0, len - k);
}

int main()
{
    string str = "abcdefg";
    cout << "Original string is: " << str << endl;

    int k = 3;
    cout << "After left rotate " << k << " places, the string is: " << rotateString(str, k, true) << endl;
    cout << "After right rotate " << k << " places, the string is: " << rotateString(str, k, false) << endl;

    return 0;
}

输出结果为:

Original string is: abcdefg
After left rotate 3 places, the string is: defgabc
After right rotate 3 places, the string is: efgabcd
函数说明

接下来,我们逐一解释这个函数的实现细节。

旋转位数的处理

在进行字符串旋转之前,我们需要先看一下旋转的位数和字符串长度的关系。如果位数k大于等于字符串长度,我们可以对k取余数,从而达到减小位数的目的。这个过程可以使用下面的代码实现:

if (k >= len)
    k %= len;
左旋转和右旋转的区别

如果需要左旋转字符串,我们可以先将前k个字符移动到字符串的后面。这个操作可以使用substr()函数实现:

if (left)
    return str.substr(k) + str.substr(0, k);

如果需要右旋转字符串,我们则需要将后k个字符移动到字符串的前面。同样可以使用substr()函数实现。

else
    return str.substr(len - k) + str.substr(0, len - k);
总结

本篇文章向您介绍了如何使用C++编写一个函数,实现字符串的左旋转和右旋转。该函数的代码简单、易懂、高效,可以满足大多数场景的需求。您可以在自己的程序中使用这个函数,使得字符串的操作更加灵活和高效。