LeetCode解题思路:344. Reverse String
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode解题思路:344. Reverse String相关的知识,希望对你有一定的参考价值。
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = "hello", return "olleh".
题意:翻转字符串,从头到尾翻转。
基本思路:
1.如果对指针操作还不熟练,可以通过另分配n个字节的内存来进行翻转。即将字符串从后向前读,然后从前向后保存在新内存中,再将指针指向新内存。
代码如下:(如果不把strlen(s)保存成一个单独的数,会运行超时)
1 char* reverseString(char* s) { 2 assert(s != NULL); 3 int len= strlen(s)-1; 4 char* tmp = (char *)malloc(len+2); 5 for(int i = len; i>=0; --i) 6 tmp[len-i] = s[i]; 7 tmp[len+1]=‘\0‘; 8 return tmp; 9 }
2.如果对指针掌握已经比较熟练了,那么可以指针的方法,头指针和尾指针互换,向中间移位。这种方法无论是空间还是时间都是最省事的。代码如下:
1 char* reverseString(char* s) { 2 assert(s != NULL); 3 char * beg = s, *end = s+strlen(s)-1, *tmp = s; 4 while(beg <end) 5 { 6 char temp = *beg; 7 *beg = *end; 8 *end = temp; 9 ++beg; 10 --end; 11 } 12 return tmp; 13 }
3.调用C++ STL的方式,<algorithm>中有一个reverse函数,用于翻转各种可以使用双向迭代器的东西。代码如下:
1 class Solution { 2 public: 3 string reverseString(string s) { 4 reverse(&s[0],&s[s.length()]); 5 return s; 6 } 7 };
reverse函数介绍:http://zh.cppreference.com/w/cpp/algorithm/reverse
简单的问题并不是不重要。
以上是关于LeetCode解题思路:344. Reverse String的主要内容,如果未能解决你的问题,请参考以下文章