【发布时间】:2016-09-30 19:13:47
【问题描述】:
输入:
abcdE
输出:
ABCDe
我正在为此代码寻找一种高效且代码更少的解决方案:
#include <iostream>
#include <string>
using namespace std;
int main() {
int len, ;
string data;
cin >> data;
len = data.length();
for (i = 0; i < len; i++)
if (isupper(data[i]))
data[i] = tolower(data[i]);
else
data[i] = toupper(data[i]);
cout << data << endl;
return 0;
}
【问题讨论】:
-
是的,有:
std::ctype::toupper(),您可以使用std::transform()算法等来应用它。 -
你也许可以用更少的行来写这个,但就效率而言,这是 O(N),因为你必须尽可能好地访问每个元素。
标签: c++ toggle toupper tolower