T1[camelCase]
题目描述
将输入的字符串转换为驼峰(camelCase)风格。
1. 转换后的字符串只保留字母和数字,去除其他字符;
2. 输入字符串中的字母字符的前一字符如非字母或数字,该字母转换后为大写,其他字母转换后为小写;例外:转换后的字符串第一个字符如果是字母,则该字母转换后为小写;
3. 转换后的字符串保留数字字符。
输入描述
一行字符串
输出描述
转换后的字符串
示例1
样例输入
hello_world
样例输出
helloWorld
示例2
样例输入
This is a Demo!
样例输出
thisIsADemo
示例3
样例输入
__UPPER__CASE__
样例输出
upperCase
示例4
样例输入
CapitalizedWords
样例输出
capitalizedwords
示例5
样例输入
This is 5th example
样例输出
thisIs5thExample
算法
(模拟) $O(n)$
C++ 代码
#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
string s, ret;
int main() {
getline(cin, s);
bool needUpper = true, is_first = true;
for (int i = 0; i < s.size(); i ++ ) {
auto &ch = s[i];
if (isdigit(ch)) {
ret += ch;
needUpper = false;
} else if (isalpha(ch)) {
if (needUpper) ch = toupper(ch);
else ch = tolower(ch);
ret += ch;
needUpper = false;
} else needUpper = true;
if (is_first && ret.size() && isalpha(ret[0]))
ret[0] = tolower(ret[0]), is_first = false;
}
cout << ret;
return 0;
}
T2[小于n的整数]
题目描述
输入一个正整数,返回与n组成数字完全相同,且小于n的最大整数。
输入描述
输入一个正整数n(n可能大于int64的范围,小于1000位)
输出描述
输出小于n的最大整数。若不存在这样的数,输出0。
示例1
样例输入
165
样例输出
156
示例2
样例输入
998877665544332211
样例输出
998877665544332121
示例3
样例输入
23
样例输出
0
示例4
样例输入
103
样例输出
0
说明
前导0不能作为组成数字,因此103的输出应为0,而不是31
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
string a, b;
int cmp(string &a, string &b) {
for (int i = 0; i < a.size(); i ++ )
if (a[i] > b[i]) return 1;
else if (a[i] < b[i]) return -1;
return 0;
}
int main() {
cin >> a;
b = a;
prev_permutation(a.begin(), a.end());
if (a[0] == '0' || cmp(a, b) >= 0) cout << '0';
else for (auto x: a) cout << x;
return 0;
}
选择题
基础知识
25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛 7
shopee不是每周三的笔试吗 今天也有吗
对啊,收到笔试邮件了,做一下呗