LeetCode : 344. Reverse String
这个题目本身来说应该算是学初级入门第一课的难度了,相信学过数组的小朋友就能解决。
比较简单的实现方式有很多,但还是考虑算法的效率问题。
class Solution { public: string reverseString(string s) { string temp(s); int i=0,len=0; len = s.length(); for(int i=0;i<len;i++){ temp[i]=s[len-1-i]; } return temp; } };
但如果这样,并没有发挥C++语言强大的功能,我们可以试试STL库。
reverse (STL Samples)
template<class BidirectionalIterator> inline void reverse( BidirectionalIterator First, BidirectionalIterator Last )
// reverse.cpp // compile with: /EHsc // Illustrates how to use the reverse function. // // Functions: // reverse - Reverse the items in a sequence. // disable warning C4786: symbol greater than 255 character, // okay to ignore #pragma warning(disable: 4786) #include <iostream> #include <vector> #include <string> #include <algorithm> #include <functional> using namespace std; int main() { const int VECTOR_SIZE = 8; // Define a template class vector of strings typedef vector<string > StrVector; //Define an iterator for template class vector of strings typedef StrVector::iterator StrVectorIt; StrVector Tongue_Twister(VECTOR_SIZE); StrVectorIt start, end, it; // location of first element of Tongue_Twister start = Tongue_Twister.begin(); // one past the location last element of Tongue_Twister end = Tongue_Twister.end(); //Initialize vector Tongue_Twister Tongue_Twister[0] = "she"; Tongue_Twister[1] = "sells"; Tongue_Twister[2] = "sea"; Tongue_Twister[3] = "shells"; Tongue_Twister[4] = "by"; Tongue_Twister[5] = "the"; Tongue_Twister[6] = "sea"; Tongue_Twister[7] = "shore"; cout << "Before calling reverse" << endl; // print content of Tongue_Twister cout << "Try this Tongue Twister:"; for (it = start; it != end; it++) cout << " " << *it; cout << endl; // reverse the items in the vector Tongue_Twister reverse(start, end); cout << "After calling reverse" << endl; // print content of Tongue_Twister cout << "Now try the reversed Tongue Twister:"; for (it = start; it != end; it++) cout << " " << *it; }
Before calling reverse Try this Tongue Twister: she sells sea shells by the sea shore After calling reverse Now try the reversed Tongue Twister: shore sea the by shells sea sells she
所以,这道题目可以这样解决:
string reverseString(string s) { reverse(s.begin(),s.end()); return s; }
跑476个case,两段代码的时间是相同的,都是12ms,可以推测对于string 的inline而言,实现方式是一样的。