OCAC暑期比赛第一场 I题 大小写转换密码锁 题解

Posted ocac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCAC暑期比赛第一场 I题 大小写转换密码锁 题解相关的知识,希望对你有一定的参考价值。

大小写转换密码锁
原题链接:http://codeforces.com/problemset/problem/131/A
【题目描述】
对于一个字符串 s 来说,它的大小写转换密码锁是对 s 的每一位字符进行大小写转换后得到的目标字符串。
(也就是说,对于 s 上面的每一位字符 c,如果 c 是大写字母,则将其转换成对应的小写字母;如果 c 是小写字母,则将其转换为大写字母)
但是并不是所有的字符串都是经过加密的,我们定义一个字符串是大小写转换密码锁,当且仅当:
1、这个字符串全部都是大写字母;
2、或者这个字符串除了首字母不是大写字母,其它字母都是大写字母。
给你一个字符串,你需要确定它的原始字符串是什么。
这就是说,如果给你的字符串不是大小写转换密码锁,你只需要原样输出它就可以了;
而如果给你的字符串是大小写转换密码锁,你需要输出它的原始字符串。
【输入格式】
输入包含一个仅由大小写英文字母构成的字符串 s (s 的长度在 1 到 100 之间)。
【输出格式】
输出 s 按照题目描述的原始字符串。
【样例输入1】
cAPS
【样例输出1】
Caps
【样例输入2】
Lock
【样例输出2】
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;

 

以上是关于OCAC暑期比赛第一场 I题 大小写转换密码锁 题解的主要内容,如果未能解决你的问题,请参考以下文章

OCAC暑期比赛第一场 C题 字符串比较 题解

OCAC暑期比赛第一场 B题 字符串任务 题解

OCAC暑期比赛第一场 J题 星球语言的翻译 题解

OCAC暑期比赛第一场 H题 聊天室 题解

OCAC暑期比赛第一场 E题 有用的数学 题解

OCAC暑期比赛第一场 G题 男孩或者女孩 题解