C++程序 检查给定数字的所有旋转是否大于或等于给定数字

C++程序 检查给定数字的所有旋转是否大于或等于给定数字

给定整数 x ,任务是查找是否对元素的每个 k 周期移位都产生大于或等于相同元素的数字。

整数 x 的 k 循环移位是一个函数,它删除 x 的最后 k 个数字,并将它们插入开始。

例如,k 循环移位 123 是 k = 1 和 231的 312 。如果满足给定条件则打印 Yes 否则打印 No

例子:

输入: x = 123

输出: Yes

123 的 k 循环移位是 k=1 时的 312 和 k=2 时的231。

312 和 231 都大于 123。

输入: 2214

输出: No

当 k=2 时,2214 的 k 循环移位是 1422,小于 2214。

做法: 简单地查找数字的所有可能的 k 循环移位,并检查它们是否全部大于给定的数字。

以下是上述方法的实现:

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
 
void CheckKCycles(int n, string s)
{
    bool ff = true;
    int x = 0;
    for (int i = 1; i < n; i++)
    {
 
        // 在索引 i 处分割数字并添加到前面
        x = (s.substr(i) + s.substr(0, i)).length();
 
        // 检查该值是否大于或等于给定值
        if (x >= s.length())
        {
            continue;
        }
        ff = false;
        break;
    }
    if (ff)
    {
        cout << ("Yes");
    }
    else
    {
        cout << ("No");
    }
}
 
// 驱动程序
int main()
{
    int n = 3;
    string s = "123";
    CheckKCycles(n, s);
    return 0;
}
 
/* This code contributed by Rajput-Ji */```  

输出:

Yes

时间复杂度: O(N 2 ),其中 N 表示给定字符串的长度。

程序的时间复杂度为 O(N 2 ) ,因为首先它运行一个循环来遍历字符串,然后在其中使用子字符串函数。

辅助空间: O(1),不需要额外的空间,因此为常数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例