344. Reverse String (字符串反转/逆序)
2018-03-08 19:43
387 查看
一、题目
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = “hello”, return “olleh”.
二、分析和解答
1、首先想起两种:数组的反转和栈。栈的省略了。在数组中,第一位和最后一位交换;第二位和倒第二位交换,一直到中间的一位或者两位交换结束。其代码为:
有三点需要注意:
(1)for循环中不能取等于号,具体可以举个例子自己试验一下:一个奇数个元素(len/2就是中间那个数,包含就是自己和自己交换;不包含就是不交换,都对),一个偶数个元素(len/2是中间两个元素靠后的那个,不包含就是把这两个数交换,包含就是交换后再交换,出错)。
(2)如何把字符数组变为字符串?new String()或者String.valueOf(arr);
(3)碰到字符串,一定注意字符串的边界条件。显然我忘了,具体看下面。
2、从快排我们可以获得另外一种写法:
这样就不用考虑中间的那个位置了,包不包括都对。
3、还有一种递归的方法,我之前没有想到,代码如下:
不过这样 Memory Limit Exceeded!超出内存限制,会有一个非常非常长的案例无法通过!
Note:与字符交换相关的题目大都以字符串的逆序为基础,有点是局部逆序,有的是全局逆序后再局部逆序等等等等吧!
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = “hello”, return “olleh”.
二、分析和解答
1、首先想起两种:数组的反转和栈。栈的省略了。在数组中,第一位和最后一位交换;第二位和倒第二位交换,一直到中间的一位或者两位交换结束。其代码为:
public String reverseString(String s) { char[] arr = s.toCharArray(); int len = arr.length; for(int i=0;i<len/2;i++){ char tmp = arr[i]; arr[i] = arr[len-1-i]; arr[len-1-i] = tmp; } return new String(arr); }
有三点需要注意:
(1)for循环中不能取等于号,具体可以举个例子自己试验一下:一个奇数个元素(len/2就是中间那个数,包含就是自己和自己交换;不包含就是不交换,都对),一个偶数个元素(len/2是中间两个元素靠后的那个,不包含就是把这两个数交换,包含就是交换后再交换,出错)。
(2)如何把字符数组变为字符串?new String()或者String.valueOf(arr);
(3)碰到字符串,一定注意字符串的边界条件。显然我忘了,具体看下面。
2、从快排我们可以获得另外一种写法:
public String reverseString(String s) { if(s == null || s.length() == 0) return s; char[] arr = s.toCharArray(); int i = 0,j = arr.length - 1; while(i < j){ char tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; i++; j--; } return String.valueOf(arr); }
这样就不用考虑中间的那个位置了,包不包括都对。
3、还有一种递归的方法,我之前没有想到,代码如下:
public String reverseString(String s) { if("".equals(s) || s == null) return s; String str = s.substring(1); return reverseString(str) + s.charAt(0); }
不过这样 Memory Limit Exceeded!超出内存限制,会有一个非常非常长的案例无法通过!
Note:与字符交换相关的题目大都以字符串的逆序为基础,有点是局部逆序,有的是全局逆序后再局部逆序等等等等吧!
相关文章推荐
- LeetCode----344. Reverse String 字符串反转
- 344. Reverse String 字符串反转
- [LeetCode]344. Reverse String(反转字符串)
- LeetCode344——Reverse String(将字符串反转)
- LeetCode——344. Reverse String(字符串反转)
- leetCode 344. Reverse String 字符串
- 字符串操作系列_2字符串反转(字符串的逆序)
- [Leetcode,python] Reverse String 反转字符串
- [Leetcode,python] Reverse String 反转字符串
- leetcode-344. Reverse String 字符串翻转,切片的用法
- 字符串- leetcode 344. Reverse String
- 【LeetCode】字符串反转函数的几个算法 Reverse String
- 将一个字符串逆序,不要使用反转函数(面试题)
- LeetCode--Reverse String 反转字符串(Python)
- 字符串反转--单词不逆序
- Reverse String 字符串反转
- 将一个字符串逆序,不要使用反转函数
- 344. Reverse String (转置字符串)
- LeetCode 344. Reverse String(字符串翻转)
- 字符串左旋转&&反转单词顺序&&Text Reverse&&句子的逆序