酷代码 AI
菜单
服务商

以c++初学者的角度解下题:墙上的ASCII码大写字母和小写字母混在一起,混乱不堪,你有办法将大写字母和小写字母分离开,形成两个新的字母串吗? 输入: 共 3 行, 第 1 行是一个正整数n,表示混合字串的总长度。 第 2 行是包含 n 个只包含大小写字母的字符。 第 3 行是和第 2 行完全相同的 n 个字符。 输出: 输出有两行,第一行是筛选后的仅保留了大写字母的字母串,第二行是筛选后的仅保留了小写字母的字母串。字母串内字母之间无需用空格隔开。

```cpp #include <iostream> #include <string> using namespace std; int main() { int n; // 读取混合字串的总长度 cin >> n; string input; // 读取包含大小写字母的字符串 cin >> input; // 再读取一次相同的字符串,不过这一行读取在本题逻辑里不影响结果 cin >> input; // 用于存储大写字母的字符串 string uppercaseLetters = ""; // 用于存储小写字母的字符串 string lowercaseLetters = ""; // 遍历输入的字符串 for (int i = 0; i < n; i++) { // 判断字符是否为大写字母 if (input[i] >= 'A' && input[i] <= 'Z') { // 如果是大写字母,添加到存储大写字母的字符串中 uppercaseLetters = uppercaseLetters + input[i]; } // 判断字符是否为小写字母 else if (input[i] >= 'a' && input[i] <= 'z') { // 如果是小写字母,添加到存储小写字母的字符串中 lowercaseLetters = lowercaseLetters + input[i]; } } // 输出筛选后的大写字母串 cout << uppercaseLetters << endl; // 输出筛选后的小写字母串 cout << lowercaseLetters << endl; return 0; } ``` 代码解释 1. 输入部分: - `cin >> n;`:从控制台读取一个整数 `n`,它代表混合字符串的总长度。 - `cin >> input;`:读取一行包含大小写字母的字符串。 - 又一次 `cin >> input;`:这里再次读取一行相同的字符串,但在本题后续逻辑里没有实际作用,只是按照输入要求进行读取。 2. 变量声明: - `string uppercaseLetters = "";`:定义一个空字符串 `uppercaseLetters`,用来存放筛选出来的大写字母。 - `string lowercaseLetters = "";`:定义一个空字符串 `lowercaseLetters`,用来存放筛选出来的小写字母。 3. 遍历字符串: - 使用 `for` 循环遍历输入的字符串 `input`。 - 在循环里,通过 `if` 语句判断当前字符是否为大写字母(`input[i] >= 'A' && input[i] <= 'Z'`),如果是,就把它添加到 `uppercaseLetters` 中。 - 通过 `else if` 语句判断当前字符是否为小写字母(`input[i] >= 'a' && input[i] <= 'z'`),如果是,就把它添加到 `lowercaseLetters` 中。 4. 输出结果: - `cout << uppercaseLetters << endl;`:输出筛选后的大写字母串。 - `cout << lowercaseLetters << endl;`:输出筛选后的小写字母串。 复杂度分析 - 时间复杂度:$O(n)$,这里的 $n$ 是输入字符串的长度。因为只需要对输入字符串进行一次遍历。 - 空间复杂度:$O(n)$,主要是用来存储筛选后的大写字母串和小写字母串。 [2025-12-05 19:27:58 | AI问答 | 733点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多