title: leetcode-557-反转字符串中的单词III(java|python)
date: 2019-10-14 20:23:19
categories:
- leetcode
tags: - leetcode
leetcode-557-反转字符串中的单词III(java|python)
-
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
解法一:使用java内置函数反转,最后拼接即可
class Solution { public String reverseWords(String s) { String[] strings = s.split(" "); s=""; for (int i=0;i<strings.length-1;i++){ s=s+new StringBuffer(strings[i]).reverse().toString()+" "; } return s+new StringBuffer(strings[strings.length-1]).reverse().toString(); } }
时间复杂度和空间复杂度很高
-
解法2:使用indexOf函数:这个函数的作用有一个string.indexOf(char,index)就是在位置index开始,string查找第一个char的索引位置
class Solution { char[] mychar; public String reverseWords(String s) { mychar=s.toCharArray(); int begin=0; int end; while (begin<mychar.length) { end = s.indexOf(' ',begin+1); if(end==-1) end = mychar.length; reverse(begin,end-1); begin=end+1; } return String.copyValueOf(mychar); } private void reverse(int i,int j) { while (i<j) { char tmp=mychar[i]; mychar[i]=mychar[j]; mychar[j]=tmp; i++; j--; } } }
时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)