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题 大小写转换密码锁 题解的主要内容,如果未能解决你的问题,请参考以下文章