在 C/C++ 中反转字符串的不同方法

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

给定一个字符串,编写一个 C/C++ 程序来反转它。

通过交换字符编写自己的反向函数: 一个简单的解决方案是编写我们自己的反向函数来反转C++ 中的字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
c++复制代码// 一个简单的 C++ 程序来反转字符串
#include <bits/stdc++.h>
using namespace std;

// 反转字符串的函数
void reverseStr(string& str)
{
int n = str.length();

// 从两个角开始交换字符
for (int i = 0; i < n / 2; i++)
swap(str[i], str[n - i - 1]);
}

// 驱动程序
int main()
{
string str = "haiyong";
reverseStr(str);
cout << str;
return 0;
}
  1. 输出 :
1
c++复制代码gnoyiah
  1. 使用内置的“反向”功能: “算法”头文件中有一个直接的功能可以进行反向操作,可以节省我们在编程时的时间。
1
2
3
c++复制代码// 反转 [begin, end] 中的元素
void reverse (BidirectionalIterator begin,
BidirectionalIterator end);
1
2
3
4
5
6
7
8
9
10
11
12
13
c++复制代码//一个快速编写的程序,用于使用 reverse() 反转字符串
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str = "haiyong";

// 反向 str[begin..end]
reverse(str.begin(), str.end());

cout << str;
return 0;
}
  1. 输出 :
1
c++复制代码gnoyiah
  1. 只打印反向
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
c++复制代码// C++程序打印一个字符串的反转
#include <bits/stdc++.h>
using namespace std;

// 反转字符串的函数
void reverse(string str)
{
for (int i=str.length()-1; i>=0; i--)
cout << str[i];
}

// 驱动程序代码
int main(void)
{
string s = "haiyong";
reverse(s);
return (0);
}
  1. 输出:
1
c++复制代码gnoyiah
  1. 获取 const 字符串的反转:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
c++复制代码// 获取const字符串反转的C++程序
#include <bits/stdc++.h>
using namespace std;

// 函数反转字符串并返回该字符串的反向字符串指针
char* reverseConstString(char const* str)
{
// 查找字符串的长度
int n = strlen(str);

// 创建动态指针字符数组
char *rev = new char[n+1];

// 将字符串复制到 ptr 数组
strcpy(rev, str);

// 从两个角开始交换字符
for (int i=0, j=n-1; i<j; i++,j--)
swap(rev[i], rev[j]);

// 反转字符串的返回指针
return rev;
}

// 驱动程序代码
int main(void)
{
const char *s = "haiyong";
printf("%s", reverseConstString(s));
return (0);
}
  1. 输出:
1
c++复制代码gnoyiah
  1. 使用构造函数反向字符串:将反向迭代器传递给构造函数返回一个反向字符串。
1
2
3
4
5
6
7
8
9
10
11
12
13
c++复制代码// 使用构造函数反转字符串的简单 C++ 程序
#include <bits/stdc++.h>
using namespace std;
int main(){

string str = "haiyong";

//反向迭代器的使用
string rev = string(str.rbegin(),str.rend());

cout<<rev<<endl;
return 0;
}
  1. 输出:
1
c++复制代码gnoyiah

5.使用临时字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c++复制代码// 使用构造函数反转字符串的简单 C++ 程序
#include <bits/stdc++.h>
using namespace std;
int main(){

string str = "haiyong";
int n=str.length();
//存储反向的临时字符串
string rev;
for(int i=n-1;i>=0;i--)
rev.push_back(str[i]);

cout<<rev<<endl;
return 0;
}

输出:

1
c++复制代码gnoyiah

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%