题目描述
给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。
输入描述
输入包含多组测试数据。
输入的第一行是一个整数n,表示有测试数据。(整个输入中,只有一个n)
接下来是n组测试数据,保证串长为偶数位(串长<=50)。
输出描述
请为每组测试数据输出奇偶位互换后的结果,每组输出占一行。
输入示例
2
0aa0
bb00
输出示例
a00a
bb00
本节课我们将学到字符串的奇偶位互换
比如0aa0换成aooa
需要以下几步
- 遍历字符串
- 第1位和第2位交换
- 第3位和第4位交换
- ...
- 第i位和第i+1位交换
- 第i+2位和第i+3位交换
1.交换变量
直接交换两个变量是不现实的,此时需要引入第三个变量
int x = 1;
int y = 2;
int temp = x;
x = y;
y = temp;
使用函数实现
void swap(char &a,char &b){
char tmp = a;
a = b;
b = temp;
}
2.代码编写
1.代码结构
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
string s;
while(n--){
cin >> s;
}
return 0;
}
2.swap函数定义完整
void swap(char &a, char &b){
char tmp = a;
a = b;
b = temp;
}
3.遍历字符串
//两两交换,1和2交换完之后,迭代器+2,3和4交换
for(int i = 0; i < s.size()-1; i+=2){
swap(s[i],s[i + 1]);
}
4.互换字符串输出
cout << s << endl;
5.完整代码
#include <bits/stdc++.h>
using namespace std;
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int n;
cin >> n;
string s;
while(n--){
cin >> s;
for(int i = 0;i < s.size()-1;i+=2){
swap(s[i],s[i+1]);
}
cout << s << endl;
}
return 0;
}