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