C++中substr函数用法

1. 形式:s.substr(pos, n)
2. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝

例题:
题目描述
Rabbit得到了一个字符串,她的好朋友xxx可以给这个字符串施加一次魔法。
魔法可以选择字符串的任一位置,并将该位置后面的所有字符水平拼接到串首。
例如:对于字符串abcde,可以通过施加魔法得到cdeab。
如果xxx通过施加魔法将字符串的字典序变得严格比之前的小,那么他将拿走这一字符串。
Rabbit想知道自己的字符串会不会被xxx拿走。
输入描述:
第一行一个整数n,表示字符串的长度。

接下来一行一个长度为n的只由小写字母组成的字符串。
输出描述:
如果Rabbit的字符串会被xxx拿走,输出“YES”。
否则输出“NO”。
(不输出引号)
示例1

输入
5
cdeab

输出
YES

说明
xxx可以把e之后的部分“ab”放到串首,得到abcde,字典序比cdeab小,故将拿走字符串。
示例2

输入
5
abcde

输出
NO
备注:
1≤n≤100000

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
        string s;
        cin >> s;
        int flag = 0;
        for (int i = 0; i < s.size() -  1; i++)
        {
            if (s[i] >= s[i + 1])
            {
                if (s > (s.substr(i + 1, n - i) + s.substr(0, i + 1))) flag = 1;
            }
        }
        puts(flag ? "YES" : "NO");
    }
    return 0;
}
发布了57 篇原创文章 · 获赞 69 · 访问量 6367

猜你喜欢

转载自blog.csdn.net/zp1455604302/article/details/100006134