zoukankan      html  css  js  c++  java
  • Codeforces Problem 708A Letters Cyclic Shift

     题目链接:

    http://codeforces.com/problemset/problem/708/A

    题目大意:

    从字符串s中挑选出一个子串(非空),将该子串中的每个字母均替换成前一个字母,如'b'换成'a','c'换成'b',以此类推,特别的,'a'要换成'z',问经过一次转换之后,字典序最小的字符串s为多少.注意“exactly one non-empty substring”这就意味着全'a'串也要变,即字符串"aaa",替换其中的字母(会使得字典序比原来大),但又要使字典序最小,所以只能将最后一个'a'->'z'==》字串变为“aaz”

    解题思路:

    代码可以解释解题思路

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 char ca[100002];
     4 int main()
     5 {
     6     int i,k;
     7     while(~scanf("%s",ca))
     8     {
     9         k=0;
    10         for(i=0; ca[i]!=''; i++)
    11             if(ca[i]!='a')break;
    12         for(; ca[i]!=''; i++)
    13         {
    14             if(ca[i]=='a')break;
    15             ca[i]--;
    16             k=1;
    17         }
    18         if(!k)ca[strlen(ca)-1]='z';
    19         puts(ca);
    20     }
    21     return 0;
    22 }

    第一次 for 如果 s[i]!=a 则break,如果 s[i]==a 则不对原数组改变,向后扫描(有一个k作为标识)

    第二次for 一直扫描到尾,如果 !=a  则让该字符 s[i]-- ,同时作为标识的 k++,如果==a 则说明 a之前的数据已经处理完毕,已处理完“字串”,break,即可

    判断标识,输出结果

    举三个例子:

    1.

    输入:codeforces 输出:bncdenqbdr 

    k=0;i=0;

    第一次 for

      s[0] != a; break;

    第二次 for

       ---一直没有等于a 的则将每个数都s[i]--;k++

    if(!k)--  //k为非0 不执行 if 语句

    输出 s即可

    2.

    输入:abacaba 输出:aaacaba

    k=0;i=0;

    第一次 for s[0]=='a'; s[0]不变

         s[1]!=a; i=1;break;

    第二次 for i=1

        s[1]!=a; s[1]--;k++; //s[1]-- 其值原为 'b' 减减为 ‘a’

        s[2]==a;break;//字串已处理结束,字串为“b”一个字符

    if(!k)--  //k为非0 不执行 if 语句

    输出 aaacaba

    3.

    输入:aaaa 输出:aaaz

    k=0;i=0

    第一次 for s[0]=='a'; s[0]不变

         s[1]==‘a’;  s[1] 不变

          ...

         s[4]=='' 跳出循环

    第二次 for i=4 ;s[4]!='';//循环失效,不执行循环体

    if(!k)--  //k为0 执行 if 语句 s[sizof(s)-1]='z';//sizeof(s)=4,s[3]='z';

    输出 aaaz;

  • 相关阅读:
    第二周:Python3的内存管理
    第一周:JDBC中批量插入数据问题
    PyTorch对ResNet网络的实现解析
    三素数定理的证明及其方法(二)
    三素数定理的证明及其方法(一)
    羊车门问题
    对python语言学习的期待
    My first page
    windowns右键notepad++ 打开文件
    Idea里新建类的快捷键
  • 原文地址:https://www.cnblogs.com/A--Q/p/5851253.html
Copyright © 2011-2022 走看看