每日练习(字节青训)
题目:a的替换
给定一个字符串ss,编写一个函数,将字符串中的小写字母a
替换为"%100"
,并返回替换后的字符串。
例如,对于字符串"abcdwa"
,所有a
字符会被替换为"%100"
,最终结果为%100bcdw%100"
。
demo
#include <iostream>
#include <string>
using namespace std;
string solution(const string& s) {
// write code here
string result;
for (char c : s) {
if (c == 'a') {
result += "%100";
} else {
result += c;
}
}
return result; // Placeholder
}
int main() {
cout << (solution("abcdwa") == "%100bcdw%100") << std::endl;
cout << (solution("banana") == "b%100n%100n%100") << std::endl;
cout << (solution("apple") == "%100pple") << std::endl;
return 0;
}
题目:数字插入问题
小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。
你需要帮助小U找到这个插入位置,输出插入后的最大结果。
demo
#include <iostream>
#include <string>
using namespace std;
int solution(int a, int b) {
// write code here
string a_str = to_string(a);
string b_str = to_string(b);
string max_result = "";
// 遍历 a_str 的每个位置,尝试插入 b_str
for (size_t i = 0; i <= a_str.length(); ++i) {
// 在位置 i 插入 b_str
string new_number = a_str.substr(0, i) + b_str + a_str.substr(i);
// 更新最大结果
if (new_number > max_result) {
max_result = new_number;
}
}
return stoi(max_result);
}
int main() {
cout << (solution(76543, 4) == 765443) << endl;
cout << (solution(1, 0) == 10) << endl;
cout << (solution(44, 5) == 544) << endl;
cout << (solution(666, 6) == 6666) << endl;
return 0;
}
- 将
a
和b
转换为字符串,以便进行插入操作。 - 使用一个循环遍历
a_str
的每个可能插入位置,并在每个位置插入b_str
。 - 每次插入后,比较生成的新数字与当前的最大结果,如果新数字更大,则更新最大结果。
- 最后,使用
stoi
将形成的最大数字字符串转换为整数并返回。
a_str.substr(0, i)
:这个部分提取a_str
从索引0
开始到索引i
之前的所有字符。也就是说,它获取了a_str
的前i
个字符。
a_str.substr(i)
:这个部分提取a_str
从索引i
开始到字符串末尾的所有字符。