目录
前言
仅个人记录所用
源自卡码网的C++基础课
“这门C++基础课 帮助 编程零基础学员快速学习刷算法题所需要的基础语法知识,学完之后,再来刷代码随想录,或者自己去刷编程题,基本不会有语法方面的困惑了,可以帮助大家快速上手刷题。 ”
第十二题包含以下内容:
- 字符串操作练习
- 交换变量
- 函数定义练习
一、题目描述
题目描述:给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。
输入描述:输入包含多组测试数据。
输入的第一行是一个整数n,表示有测试数据。(整个输入中,只有一个n)
接下来是n组测试数据,保证串长为偶数位(串长<=50)。
输出描述:请为每组测试数据输出奇偶位互换后的结果,每组输出占一行。
输入示例:
2
0aa0
bb00
输出示例:
a00a
bb00
二、解题思路
1.交换函数
两个字符是如何相互交换的呢?
想象一下,你现在手里有两个杯子,一个杯子里装了雪碧,另一个杯子里装了可乐,要怎么把这两个杯子的饮料相互交换呢?
常规情况下当然是不可能把这两个杯子里的饮料直接进行交换的,我们应该引入第三个杯子。
- 把第一个杯子里的雪碧倒入第三个杯子中,这样第一个杯子就成了空杯子,第三个杯子里盛放的是雪碧
- 再把第二个杯子里的可乐倒入第一个杯子中,这样第二个杯子就是空的,第一个杯子里装的是可乐
- 再把之前倒入第三个杯子里的雪碧倒入第二个杯子中,这样第二个杯子装的是雪碧
经过上面的操作,就将两个杯子里的可乐和雪碧完成了交换,该操作转换成代码如下:
// 不返回(return)结果,所以返回类型为void, 函数名称为swap
// 传入的参数为两个字符,所以类型为char, 参数名称为a 和 b
void swap(char &a, char &b) { // 交换两个字符串, a和b的内容需要改变,所以需要传递引用
// 定义第三个字符,并将字符a的内容赋值给第三个字符
char tmp = a;
// 将字符a的内容修改为字符b的内容
a = b;
// 将字符b的内容修改为第三个字符的内容,也就是字符a的内容,a和b之间完成替换
b = tmp;
}
三、完整代码
#include<iostream>
#include<string>
using namespace std;
void swap(char &a, char &b) { // 交换两个字符串
char tmp = a;
a = b;
b = tmp;
}
int main() {
int n;
cin >> n;
string s;
while (n--) {
cin >> s; // 接收字符串s
for (int i = 0; i < s.size() - 1; i += 2) { // 在s字符串上原地修改
swap(s[i], s[i + 1]); // 调用函数,完成字符串交换
}
cout << s << endl;
}
}
总结
这节字符串的内容不难,结合前面学的,就可以自己试着写出来。