「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」
给定一个字符串,编写一个 C/C++ 程序来反转它。
通过交换字符编写自己的反向函数: 一个简单的解决方案是编写我们自己的反向函数来反转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; } 复制代码
- 输出 :
gnoyiah 复制代码
- 使用内置的“反向”功能: “算法”头文件中有一个直接的功能可以进行反向操作,可以节省我们在编程时的时间。
// 反转 [begin, end] 中的元素 void reverse (BidirectionalIterator begin, BidirectionalIterator end); 复制代码
//一个快速编写的程序,用于使用 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; } 复制代码
- 输出 :
gnoyiah 复制代码
- 只打印反向:
// 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); } 复制代码
- 输出:
gnoyiah 复制代码
- 获取 const 字符串的反转:
// 获取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); } 复制代码
- 输出:
gnoyiah 复制代码
- 使用构造函数反向字符串:将反向迭代器传递给构造函数返回一个反向字符串。
// 使用构造函数反转字符串的简单 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; } 复制代码
- 输出:
gnoyiah 复制代码
5.使用临时字符串
// 使用构造函数反转字符串的简单 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; } 复制代码
输出:
gnoyiah