题目描述与分析
题目描述:
给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换
输入描述:
输入包含多组测试数据。
输入的第一行是一个整数n,表示有测试数据。(整个输入中,只有一个n)
接下来是n组测试数据,保证串长为偶数位(串长<=50)。
输出描述:
请为每组测试数据输出奇偶位互换后的结果,每组输出占一行。
输入示例:
2
0aa0
bb00
输出示例:
a00a
bb00
奇偶位互换是指字符串的奇数位和偶数位相互交换位置,比如下面的字符串"0aa0", 前两位相互交换,后两位相互交换,返回的结果是a00a
想要完成字符串交换,需要完成以下步骤:
遍历字符串
第1位和第2位交换
第3位和第4位交换
…
第i位和第i + 1位交换
第i+2位和第i+3位交换
可以看到交换的操作是一直都有的,对于这个一直存在的操作,我相信大家一定能联想到上一节的函数,那我们就先来看看这个交换字符串的函数是怎么写的吧。
一、交换变量
两个字符是如何相互交换的呢?
想象一下,你现在手里有两个杯子,一个杯子里装了雪碧,另一个杯子里装了可乐,要怎么把这两个杯子的饮料相互交换呢?
常规情况下当然是不可能把这两个杯子里的饮料直接进行交换的,我们应该引入第三个杯子
把第一个杯子里的雪碧倒入第三个杯子中,这样第一个杯子就成了空杯子,第三个杯子里盛放的是雪碧
再把第二个杯子里的可乐倒入第一个杯子中,这样第二个杯子就是空的,第一个杯子里装的是可乐
再把之前倒入第三个杯子里的雪碧倒入第二个杯子中,这样第二个杯子装的是雪碧
经过上面的操作,就将两个杯子里的可乐和雪碧完成了交换,该操作转换成代码如下:
// 不返回(return)结果,所以返回类型为void, 函数名称为swap
// 传入的参数为两个字符,所以类型为char, 参数名称为a 和 b
void swap(char &a, char &b) {