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

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

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

     

    输入

    第1行:给出一个字符串(字符串非空串,只包含小写字母,长度不超过1000000)

    输出

    对于每个测试用例,输出结果占一行,如果能,输出YES,否则输出NO。

    输入样例

    aa
    ab

    输出样例

    YES
    NO

    如果满足条件一定是偶数个字符,不管怎么旋转,都是前半段等于后半段的。
    代码:
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #define MAX 1000000
    using namespace std;
    char s[MAX + 1];
    char t[MAX + 1];
    bool check() {
        int len = strlen(s);
        if(len % 2) return false;
        strcpy(t,s + len / 2);
        s[len / 2] = 0;
        if(strcmp(s,t)) return false;
        return true;
    }
    int main() {
        while(~scanf("%s",s)) {
            puts(check() ? "YES" : "NO");
        }
    }
  • 相关阅读:
    mysql_单表查询
    mysql_建表
    MySQL基础
    JS_左边栏菜单
    Vue框架之组件系统
    Vue常用语法及命令
    Django的缓存,序列化,ORM操作的性能
    Django中的form表单
    Django中的auth模块
    AJAX请求提交数据
  • 原文地址:https://www.cnblogs.com/8023spz/p/10079024.html
Copyright © 2011-2022 走看看