zoukankan      html  css  js  c++  java
  • hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0

    小明的烦恼——找字符串
    Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
    Total submit users: 108, Accepted users: 68
    Problem 11544 : No special judgement
    Problem description
      小明是个很优秀的同学,他除了特别公正外,他也很细心,当然老师肯定也知道,这不,老师又有事情找他帮忙了,老师每周都会给他一个字符串A,然后问小明“A字符串的循环移位产生的所有字符串中,字典序最小的是哪个”,于是小明屁颠屁颠的一个一个比对,但是长久下来,小明实在是受不了了,所以他想请你帮帮他。同样,你帮他解决,你就会多AC一个题目。 
    Hint:
    如果A字符串为bcda,那么其所有的循环移位的新字符串有cdab,dabc,abcd,和他自己bcda一共四个,然后在这四个中,字典序最小的为abcd,那么输出这个字符串中的第一次字符在原字符串中的位置,为3,如果有多个结果,输出数字最小的。 

    Input
      输入有T组, 以后每组第一行有一个字符串S,长度<=5000000,都是小写字母。

    Output
      对于每一个case,输出结果。

    Sample Input
    4
    bcda 
    aaa
    a
    adab
    Sample Output
    3
    0
    0
    2
    Problem Source
      HUNNU Contest 
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char str[5000000];
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%s",str);
         int len=strlen(str);
         int i=0,j=1,k=0;
          while(i<len&&j<len&&k<len)
         {
             int l=str[(i+k)%len]-str[(j+k)%len];
             if(l==0)
               {
                   k++;
               }
             if(l>0)
             {
                 i=i+k+1;
                 k=0;
             }
             if(l<0)
             {
               j=j+k+1;
                k=0;
             }
             if(i==j)
              {
                  j++;
              }
    
         }
         printf("%d
    ",min(i,j));
    
        }
      return 0;
    }
  • 相关阅读:
    页面模板
    HTML,CSS,JaveScript
    TCP三次握手
    BLDC无刷直流电机的原理及驱动基础
    调试日志——基于stm32的智能声光报警器(三)
    调试日志——基于stm32的智能声光报警器(二)
    调试日志——基于stm32的智能声光报警器(一)
    Jlink-10 pin 的定义(stm32使用)官方定义
    关于学习新知识的一点想法
    前端笔记-javaScript-3
  • 原文地址:https://www.cnblogs.com/cancangood/p/4563959.html
Copyright © 2011-2022 走看看