zoukankan      html  css  js  c++  java
  • 1347 旋转字符串

    S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。

    现在问题是给定一个字符串,判断他是否可以由一个对串旋转任意次得到。

    Input
    第1行:给出一个字符串(字符串非空串,只包含小写字母,长度不超过1000000)
    Output
    对于每个测试用例,输出结果占一行,如果能,输出YES,否则输出NO。
    Input示例
    aa
    ab
    Output示例
    YES
    NO


    思路:这个相当于把字符收尾相接,然后旋转。我对这个题目的意思有点迷。对串因为通过旋转所以本身也没有改变毕竟可以任意旋转多次。只要检查是否为对串就行。
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string num1;
        while (cin >> num1)
        {
            bool flag = 1;
            int len = num1.length();
            if (len % 2){ cout << "NO" << endl; continue; }
            for (int i = 0, j = (len/2); i < (len /2); ++i, j++)
            {
                if (num1[i] != num1[j]){ flag = 0; break; }
            }
            if (flag)cout << "YES" << endl;
            else cout << "NO" << endl;
        }
    }
  • 相关阅读:
    Library 的打包
    Webpack 的高级概念
    前端文件下载的几种方式
    Webpack 的核心概念
    vue框架目录结构
    前端工程化的理解
    this.$nextTick
    某面试题
    React Fiber是什么
    Ant Design 在回显数据的时候报错, Error: must set key for <rc-animate> children
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/9569097.html
Copyright © 2011-2022 走看看