一、使用遞歸函數實現字元串翻轉
遞歸函數是一種可以重複調用自身的函數。在字元串翻轉中,我們可以採用遞歸函數的思想,把字元串分為兩部分:第一部分是第一個字元,第二部分是剩餘的字元。接下來,遞歸調用函數,將剩餘字元不斷分為第一個字元和剩餘字元,直到剩餘字元長度為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