zoukankan      html  css  js  c++  java
  • 字符串入门练习题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;
    }
    
  • 相关阅读:
    cisco 4500X 交换机限速
    HPE 交换机基础配置
    MySQL数据库之主从复制
    MySQL复制线程状态转变
    MySQL数据库备份之mysqldump
    MySQL数据库之慢查询日志
    MySQL数据库之多线程备份工具mydumper
    MySQL数据库之索引
    MySQL之二进制日志
    MySQL数据库之sql_mode解释
  • 原文地址:https://www.cnblogs.com/zifeiynoip/p/11450594.html
Copyright © 2011-2022 走看看