题目链接:

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”

解题思路:

代码可以解释解题思路

 #include<bits/stdc++.h>
using namespace std;
char ca[];
int main()
{
int i,k;
while(~scanf("%s",ca))
{
k=;
for(i=; ca[i]!='\0'; i++)
if(ca[i]!='a')break;
for(; ca[i]!='\0'; i++)
{
if(ca[i]=='a')break;
ca[i]--;
k=;
}
if(!k)ca[strlen(ca)-]='z';
puts(ca);
}
return ;
}

第一次 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]=='\0' 跳出循环

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

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

输出 aaaz;

Codeforces Problem 708A Letters Cyclic Shift的更多相关文章

  1. Codeforces 708A Letters Cyclic Shift

    A. Letters Cyclic Shift time limit per test:1 second memory limit per test:256 megabytes input:stand ...

  2. codeforces 709C C. Letters Cyclic Shift(贪心)

    题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...

  3. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  4. AIM Tech Round 3 (Div. 1) A. Letters Cyclic Shift 贪心

    A. Letters Cyclic Shift 题目连接: http://www.codeforces.com/contest/708/problem/A Description You are gi ...

  5. CodeForces 709C Letters Cyclic Shift (水题)

    题意:给定一个字符串,让你把它的一个子串字符都减1,使得总字符串字典序最小. 析:由于这个题是必须要有一个字串,所以你就要注意这个只有一个字符a的情况,其他的就从开始减 1,如果碰到a了就不减了,如果 ...

  6. CodeForces 709C Letters Cyclic Shift

    贪心. 肯定是两个$a$之间的那些字符都$-1$,没有$a$就全部$-1$.如果输入的串全是$a$,那么把最后一个$a$改成$z$. #pragma comment(linker, "/ST ...

  7. CF708A Letters Cyclic Shift 模拟

    You are given a non-empty string s consisting of lowercase English letters. You have to pick exactly ...

  8. Codeforces Round #385 (Div. 2) A. Hongcow Learns the Cyclic Shift 水题

    A. Hongcow Learns the Cyclic Shift 题目连接: http://codeforces.com/contest/745/problem/A Description Hon ...

  9. Largest Smallest Cyclic Shift

    Largest Smallest Cyclic Shift 题目来源: Atcoder Code Festival 2017 Qual B Problem F 题目大意: 有\(X\)个字符'a',\ ...

随机推荐

  1. linux core dump 文件 gdb分析

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...

  2. 顺序队列C/C++实现

    #include <iostream> using namespace std; const int MAXSIZE = 1000; typedef int ELEMTYPE; const ...

  3. java 上传图片 并压缩图片大小

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  4. poj3294 出现次数大于n/2 的公共子串

    Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 13063   Accepted: 3670 Descr ...

  5. Yii2美化confirm

    在view中, <?= Html::a('删除', ['post/delete', 'id' => $post['id']],['data-confirm'=>'确定要删除吗?']) ...

  6. bzoj4415&&bzoj4416&&bzoj4417:SHOI2013Day1题解

    这场题好弱啊qwq 先发代码再填坑 坑已填qwq T1 bzoj4415 题目大意就是,有一个环,编号1-N,一开始指针在1,有一个长度为n的序列p,每次指针向后移pi个,然后把那个点删掉. 问所有点 ...

  7. PowerDesigner中列表显示TABLE的NAME而不是CODE

    如题, 解决方法: tools-->modeloptions-->naming convention-->display,选择NAME 如图所示:

  8. c语言几种异常

    这几天写C程序,问题不断,先记下来吧 double free or corruption 字面意思理解为重复释放空间或崩溃,通常由于你调用了两次free,虽然你可能不是两次给free()传同一个指针, ...

  9. Android成长日记-使用PagerAdapter实现页面切换

    Tip:此方式可以实现页面切换 1. 创建view1.xml,view2.xml,view3.xml,main.xml 在main.xml中创建 <android.support.v4.view ...

  10. Linux inode && Fast Directory Travel Method(undone)

    目录 . Linux inode简介 . Fast Directory Travel Method 1. Linux inode简介 0x1: 磁盘分割原理 字节 -> 扇区(sector)(每 ...