一、使用遞歸函數實現字元串翻轉
遞歸函數是一種可以重複調用自身的函數。在字元串翻轉中,我們可以採用遞歸函數的思想,把字元串分為兩部分:第一部分是第一個字元,第二部分是剩餘的字元。接下來,遞歸調用函數,將剩餘字元不斷分為第一個字元和剩餘字元,直到剩餘字元長度為1,將第一個字元和剩餘字元拼接在一起,最終得到翻轉後的字元串。
#include <iostream>
using namespace std;
void reverseString(string str) {
if(str.length() == 1) {
cout<<str;
return;
} else {
reverseString(str.substr(1));
cout<<str[0];
}
}
int main() {
string str = "Hello World!";
cout<< "Original string: " << str << endl;
cout<< "Reversed string: ";
reverseString(str);
return 0;
}
二、使用頭尾指針翻轉字元串
另一種實現字元串翻轉的方法是使用頭尾指針。首先,將頭指針指向字元串的開頭位置,尾指針指向字元串的末尾位置。接下來,將頭指針向右移動一位,將尾指針向左移動一位,交換頭指針和尾指針所指向的字元。重複這個過程,直到頭指針大於等於尾指針時停止。
#include <iostream>
using namespace std;
void reverseString(string& str) {
int start = 0, end = (int)str.length() - 1;
while(start < end) {
char tmp = str[start];
str[start] = str[end];
str[end] = tmp;
start++;
end--;
}
}
int main() {
string str = "Hello World!";
cout<< "Original string: " << str << endl;
reverseString(str);
cout<< "Reversed string: " << str << endl;
return 0;
}
三、使用STL庫函數翻轉字元串
STL(Standard Template Library)是C++標準庫中的一個重要組成部分,提供了許多常用的數據結構和演算法。其中,algorithm頭文件中提供了reverse()函數,可用於翻轉容器中的元素,包括字元串。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string str = "Hello World!";
cout<< "Original string: " << str << endl;
reverse(str.begin(), str.end());
cout<< "Reversed string: " << str << endl;
return 0;
}
四、使用棧翻轉字元串
棧是一種先進後出的數據結構,符合字元串翻轉的要求。我們可以使用棧來實現字元串的翻轉。首先,將字元串中的每個字元入棧,然後再依次出棧,得到的結果就是翻轉後的字元串。
#include <iostream>
#include <stack>
using namespace std;
void reverseString(string str) {
stack<char> st;
for(int i = 0; i <(int)str.length(); i++) {
st.push(str[i]);
}
while(!st.empty()) {
cout<< st.top();
st.pop();
}
}
int main() {
string str = "Hello World!";
cout<< "Original string: " << str << endl;
cout<< "Reversed string: ";
reverseString(str);
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/195748.html
微信掃一掃
支付寶掃一掃