时间限制 : - MS   空间限制 : - KB 
评测说明 : 1s,128m
问题描述

同学们总想AK。
于是何老板给出一个由大写字母构成的字符串,他想你帮忙找出其中距离最远的一对'A'和'K'。
比如下列字符串:
BKABGKWAXKA
距离最远一对'A'和'K'的间距为6,它们之间间隔了6个字符。

输入格式

一行,一个由大写字母构成的字符串

输出格式

一个整数,表示A和K最远的间距。要求A必须在K的左侧,如果不存在,输出-1

样例输入 1

BKABGKWAXKA

样例输出 1

6

样例输入 2

KKKKKKKKKKAAAAAAAAAAAAAAA

样例输出 2

-1

提示

1<=字符串的长度<=10000

【分析】

  第一道,肯定是签到题。按照题目德意思从字符串最前面找到第一个‘A’的下标,和最后面找到第一个‘K’的下标,相减即可。

【标程】

 #include<iostream>
using namespace std;
int Left, Right, L, R;
bool K_L, K_R; // 用于标记是否找到
string S;
void ini() {
ios::sync_with_stdio(false);
cin >> S;
}
void solve() {
Left = ;
Right = S.length();
while (!K_L || !K_R) {
if (S[Left] != 'A')++ Left;
else L = Left, K_L = ;
if (S[Right] != 'K')-- Right;
else R = Right, K_R = ;
if (Left > Right)break;   // 特判是否无解,防止死循环
}
if (K_L && K_R)
printf("%d", R - L - );
else printf("-1");
}
int main() {
ini();
solve();
return ;
}

另:

  这是@羽错光阴 童鞋的代码,也略有借鉴之处——

 #include<cstdio>
using namespace std;
char A[], c = 'A';
int i = , pos, pos2;
int main(){
while(c >= 'A' && c <= 'Z'){
c = getchar();
A[i ++] = c;
}
for (pos = ; pos <= i; pos ++)if (A[pos] =='A')break;
for (pos2 = i; pos2 >= ; pos2 --)if (A[pos2] == 'K')break;
if (pos2 <= pos || pos2 == || pos == i) {
puts("-1");
return ;
}
printf("%d", pos2 - pos - );
}

  其中的读入部分:

while(c >= 'A' && c <= 'Z')

  因为空格不属于字母范围,成功且简便地解决了读入问题。

A AK的距离的更多相关文章

  1. Sa yo na ra

    总想记点些什么. 都快忘了当初是为什么来到这里呢... 2014年10月,友人给我介绍了一门编程竞赛ACM,并给我演示了一下A+B.于是我知道了ACM的含义. 2014年12月,开始水入门题. 201 ...

  2. OJ题解记录计划

    容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001  A+B Problem First AC: 2 ...

  3. 百度地图 获取两点坐标之间的驾车距离(非直线距离) c#

    百度接口了解: http://lbsyun.baidu.com/index.php?title=webapi/route-matrix-api-v2 起点与终点为多对多关系,如果你只想取两个坐标,那就 ...

  4. 点分治练习:不虚就是要AK

    [题面] 不虚就是要AK(czyak.c/.cpp/.pas) 2s 128M czy很火.因为又有人说他虚了.为了证明他不虚,他决定要在这次比赛AK. 现在他正在和别人玩一个游戏:在一棵树上随机取两 ...

  5. thinkphp 百度地图Api坐标计算 A坐标距离B坐标多少公里 并按照距离近的排序 坐标排序 外部字段排序

    感谢我磊哥 函数封装方法: //计算距离 /* **$a 可多数坐标 就是可数组类型的 ***$b 是登录者的坐标 ***ps: lat经度 lng纬度 经度在前纬度在后 *** ***/ funct ...

  6. js根据经纬度计算两点距离

    js版-胡老师 google.maps.LatLng.prototype.distanceFrom = function(latlng) {    var lat = [this.lat(), lat ...

  7. 【点分治练习题·不虚就是要AK】点分治

    不虚就是要AK(czyak.c/.cpp/.pas)  2s 128M  by zhb czy很火.因为又有人说他虚了.为了证明他不虚,他决定要在这次比赛AK. 现在他正在和别人玩一个游戏:在一棵树上 ...

  8. php+高德地图webapi 高德jsapi 实现 当前位置与目标位置距离 并按照距离排序(坐标逆转换)

    <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak='自己 ...

  9. 玲珑杯1147 - 最后你还是AK了

    1147 - 最后你还是AK了 Time Limit:5s Memory Limit:256MByte DESCRIPTION 今天HHHH遇到了一颗树,这个树有nn个点(nn为偶数),每条边都有一个 ...

随机推荐

  1. .Net vs .Net Core,我改如何选择?看这一篇文章就够了

    前言 .Net目前支持构建服务器端应用程序的两种实现主要有两种,.NET Framework和.NET Core.两者共享许多相同的组件,并且您可以在两者之间共享代码.但是,两者之间存在根本差异,在我 ...

  2. 2019年高校微信小程序开发大赛学习笔记

    学做小程序(学堂在线笔记)一.传统布局 text-align:center //水平居中 margin-bottom: 60px //设置间距 二.弹性盒子布局 display:flex; flex- ...

  3. Redis系列四 - 分布式锁的实现方式

    前言 分布式锁一般有3中实现方式: 数据库乐观锁: 基于Redis的分布式锁: 基于ZooKeeper的分布式锁. 以下将详细介绍如何正确地实现Redis分布式锁. 可靠性 首先,为了确保分布式锁的可 ...

  4. Thread同步

    今天本人给大家讲解一下多线程的线程同步,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!! 开始说线程同步前先来个小案例: 案例启:所有的类都在Demo01中, ...

  5. springboot项目中接口入参的简单校验

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  6. JAVAEE学习day03,基本的流程控制

    有问题请留言 1.流程控制语句分类 1)顺序控制语句 2)选择结构语句 if... if...else... if...else if... else... for... switch... whil ...

  7. 【BIM】BIMFACE中创建矢量文本[下篇]

    背景 在上一篇文章中,我们通过THREEJS创建了矢量文本,并添加到了BIMFACE场景中,但是仅仅加入到场景中并不是我们的目的,我们的目的是把这种矢量文本加到指定的构件或者空间上,以此标识该构件或空 ...

  8. synchronized实现原理及其优化-(自旋锁,偏向锁,轻量锁,重量锁)

    1.synchronized概述: synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行.synchronized是通过锁机制实现同一时刻只允许一个 ...

  9. Git 基础入门

    目录 git安装 基本设置 创建版本库 相关概念 将代码提交到分支仓库 版本回退 代码修改 撤销修改 文件删除 github 远程仓库 添加远程仓库 克隆远程仓库 分支操作 忽略特殊文件 git安装 ...

  10. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...