557.反轉字串中的單詞 III
阿新 • • 發佈:2018-12-03
557.反轉字串中的單詞 III
博主的思路:
將字串轉化為字元陣列後,當遇到空格後就新增到 rst 上
這裡要注意index和 ch陣列(長的為字串s+1)的意義
class Solution { public String reverseWords(String s) { String rst = ""; int index = 0; char[] ch = new char[s.length()+1]; ch = s.toCharArray(); for(int i=0;i<ch.length;i++){ if(ch[i]!=' ' && i!=ch.length-1){ index++; }else{ System.out.println("i="+i); if(i!=ch.length){ for(int j=i-1;j>=i-index;j--){ rst = rst + (ch[j]+""); } rst += " "; index = 0; }else{ System.out.println("sdfsdf"); for(int j=i-1;j>=i-index;j--){ rst = rst + (ch[j]+""); } } } } return rst; } }
但是執行結果卻不理想,超時了。
然後我看了下第一名的程式碼,才3s
優點在於 呼叫的reserve方法直接傳了3個引數進去,提高效率
還有start,nextSpace來進行定位,少了很多陣列的操作
class Solution { public String reverseWords(String s) { char[] cl = s.toCharArray(); int start = 0; int nextSpace = s.indexOf(' ',start); while(nextSpace != -1) { reverse(cl,start,nextSpace - 1); start = nextSpace + 1; nextSpace = s.indexOf(' ',start); } reverse(cl,start,cl.length - 1); return new String(cl); } public void reverse(char[] cl,int start,int end){ while(start < end){ char temp = cl[start]; cl[start] = cl[end]; cl[end] = temp; start ++; end --; } } }