Write a function that takes a string as input and returns the string reversed.segmentfault
Example:
Given s = "hello", return "olleh".指針
第一次方案爲新開闢一個str,每次str=s[i]+str, 報錯爲內存超過限制.
故改用以下in place的方式:code
class Solution { public: string reverseString(string s) { int size=s.size(); for(int i=0;i<size/2;i++){ s[i]^=s[size-i-1]; s[size-i-1]^=s[i]; s[i]^=s[size-i-1]; } return s; } };
discuss中發現思路跟個人相似, 可是具體代碼寫法有所不一樣, 實際上比個人效率和可理解要好:blog
class Solution { public: string reverseString(string s) { int i = 0, j = s.size() - 1; while(i < j){ swap(s[i++], s[j--]); } return s; } };
採用兩頭的兩個指針i,j進行向中間夾逼. 效率上而言,個人要作減法,效率低一些.這道題還看不出兩種寫法具體優劣, 參見leetcode 345, 用方式2就很條理清晰了.ip