标签:split -- 包括 word += pen res for []
给定一个字符串,逐个翻转字符串中的每个单词。
示例:
输入: "the sky is blue
", 输出: "blue is sky the
".
说明:
进阶: 请选用C语言的用户尝试使用 O(1) 空间复杂度的原地解法。
第一种方法:时间复杂度高,但空间复杂度低
public class Solution { public String reverseWords(String s) { if(s.length()==0)return ""; String[] string=s.split("\\s+"); StringBuffer sb=new StringBuffer(); for(int i=string.length-1;i>=0;i--){ sb.append(string[i]).append(" "); } return sb.toString().trim(); } }
第二种方法:时间复杂度低,但空间复杂度为O(n)
public class Solution { public String reverseWords(String s) { if(s.length()==0)return s; char[] ch=s.toCharArray(); char[] res=new char[ch.length]; int len=helper(ch,ch.length-1,res,0,0); return new String(res,0,len); } private int helper(char[] ch,int r,char[] res,int l,int len){ while(r>=0&&ch[r]==‘ ‘){ r--; } if(r<0)return Math.max(0,len-1); int rigth=r; while(r>=0&&ch[r]!=‘ ‘){ r--; } len+=rigth-r+1; for(int left=r+1;left<=rigth;left++,l++){ res[l]=ch[left]; } if(l<res.length){ res[l++]=‘ ‘; } return helper(ch,r,res,l,len); } }
标签:split -- 包括 word += pen res for []
原文地址:https://www.cnblogs.com/yihangZhou/p/10158449.html