zoukankan      html  css  js  c++  java
  • A AK的距离

    时间限制 : - 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’的下标,相减即可。

    【标程】

     1 #include<iostream>
     2 using namespace std;
     3 int Left, Right, L, R;
     4 bool K_L, K_R;    // 用于标记是否找到
     5 string S;
     6 void ini() {
     7     ios::sync_with_stdio(false);
     8     cin >> S;
     9 }
    10 void solve() {
    11     Left = 0;
    12     Right = S.length();
    13     while (!K_L || !K_R) {
    14         if (S[Left] != 'A')++ Left;
    15         else L = Left, K_L = 1;
    16         if (S[Right] != 'K')-- Right;
    17         else R = Right, K_R = 1;
    18         if (Left > Right)break;   // 特判是否无解,防止死循环
    19     }
    20     if (K_L && K_R)
    21         printf("%d", R - L - 1);
    22     else printf("-1");
    23 }
    24 int main() {
    25     ini();
    26     solve();
    27     return 0;
    28 }

     另:

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

     1 #include<cstdio>
     2 using namespace std;
     3 char A[10005], c = 'A';
     4 int i = 1, pos, pos2;
     5 int main(){
     6     while(c >= 'A' && c <= 'Z'){
     7         c = getchar();
     8         A[i ++] = c;
     9     }
    10     for (pos = 1; pos <= i; pos ++)if (A[pos] =='A')break;
    11     for (pos2 = i; pos2 >= 1; pos2 --)if (A[pos2] == 'K')break;
    12     if (pos2 <= pos || pos2 == 0 || pos == i) {
    13         puts("-1");
    14         return 0;
    15     }
    16     printf("%d", pos2 - pos - 1);
    17 }

      其中的读入部分:

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

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

  • 相关阅读:
    14.12.5
    Linux文件系统的实现 ZZ
    Linux的inode的理解 ZZ
    下载微软符号表的教程
    Windows内核分析——内核调试机制的实现(NtCreateDebugObject、DbgkpPostFakeProcessCreateMessages、DbgkpPostFakeThreadMessages分析)
    读书笔记|Windows 调试原理学习|持续更新
    UAF漏洞学习
    CVE-2010-3971 CSS内存破坏漏洞分析
    CVE-2012-1876漏洞分析
    CVE-2012-0158个人分析
  • 原文地址:https://www.cnblogs.com/Limbo-To-Heaven/p/11335727.html
Copyright © 2011-2022 走看看