题目链接:

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. androd Sdk manager配置

    Android Android SDK 配置步骤 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manag ...

  2. Android 自定义Popupwindow 注意事项,手机和平板的区别

    首先自定义ppw是要继承Popupwindow 的 而要成功的显示出自定义的ppw就必须实现下面的三句代码 // 必要的三要素下面,不然popWind显示不出来 this.setContentView ...

  3. git diff命令

    1. 比较两次提交的差异 2. 两个分支之间的比较 3. 暂存区和版本库的比较

  4. ASP.NET MVC html help

    public static class HtmlHelper { /// <summary> /// 返回没有边框的只读的TextBox标签 /// </summary> // ...

  5. ThinkPHP的RBAC

    基于角色的访问控制(Role-Based Access Control) 在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限. ThinkPHP通过5张表实现权限控制 th ...

  6. Xcode找不到模拟器出现"My Mac"

    问题如图: 步骤一. 找到target->built settings->Architectures->Base SDK, 选择你需要的版本;如果还是不行,看步骤二. 步骤二. 1) ...

  7. 酶切位点分析(the analysis of enzyme sites)

    转自 http://www.yelinsky.com/blog/archives/278.html 稍有修改 默认位点为"CCGG".其他位点分析可修改脚本中的 my $site ...

  8. Matlab以特殊分隔符写入txt(dlmwrite)

    clc clear all load('E:\RSWeb\mahoyt数据集\movielens\u.data'); dlmwrite('E:\RSWeb\mahoyt数据集\movielens\ne ...

  9. VS2010 asp.net development server 无法展示svg图片

    无解!只能使用IIS Express或者部署到服务器上的IIS能解决! 以下为解释: http://stackoverflow.com/questions/5981309/asp-net-develo ...

  10. C#检测驱动是否安装的问题

    #region 检测CCD驱动是否安装成功 string path = @"C:\WINDOWS\system32\drivers\UsbCamIF.sys"; //驱动的默认安装 ...