• 字符串入门练习题8 大小写转换密码锁 题解


    题目出处:http://codeforces.com/problemset/problem/131/A

    题目描述

    对于一个字符串 s 来说,它的大小写转换密码锁是对 s 的每一位字符进行大小写转换后得到的目标字符串。
    (也就是说,对于 s 上面的每一位字符 c,如果 c 是大写字母,则将其转换成对应的小写字母;如果 c 是小写字母,则将其转换为大写字母)
    但是并不是所有的字符串都是经过加密的,我们定义一个字符串是大小写转换密码锁,当且仅当:
    1、这个字符串全部都是大写字母;
    2、或者这个字符串除了首字母不是大写字母,其它字母都是大写字母。
    给你一个字符串,你需要确定它的原始字符串是什么。
    这就是说,如果给你的字符串不是大小写转换密码锁,你只需要原样输出它就可以了;
    而如果给你的字符串是大小写转换密码锁,你需要输出它的原始字符串。

    输入格式

    输入包含一个仅由大小写英文字母构成的字符串 s (s 的长度在 1 到 100 之间)。

    输出格式

    输出 s 按照题目描述的原始字符串。

    样例输入

    cAPS
    

    样例输出

    Caps
    

    样例输入

    Lock
    

    样例输出

    Lock
    

    题目分析

    这是一道很简单的题目,我们只需要判断除了首字母之外的其它字母是不是都是大写的,就能够确定它是不是大小写转换密码锁了。
    然后,如果它是大小写转换密码锁的话,我们对他进行一下大小写转化就可以了。
    实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    
    string s;
    
    bool check() {
        int n = s.length();
        for (int i = 1; i < n; i ++) {
            if (s[i] >= 'a' && s[i] <= 'z') return false;
        }
        return true;
    }
    
    void transfer() {
        int n = s.length();
        for (int i = 0; i < n; i ++) {
            if (s[i] >= 'a' && s[i] <= 'z') s[i] = toupper(s[i]);
            else s[i] = tolower(s[i]);
        }
    }
    
    int main() {
        cin >> s;
        if (check()) transfer();
        cout << s << endl;
        return 0;
    }
    
  • 相关阅读:
    前端工程师如何打发闲余时光?(转)
    比较好的前端开发工具
    蓝桥历年套题 约数倍数选卡片 博弈
    单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝
    5-15
    2018CCPC桂林站G Greatest Common Divisor
    STL中的BITSET运用
    2018CCPC桂林站JStone Game
    牛客2019湘潭大学程序竞赛
    Combine String HDU
  • 原文地址:https://www.cnblogs.com/zifeiynoip/p/11450594.html
Copyright © 2020-2023  润新知