Reverse Words in a String
来源:互联网 发布:windows硬盘分区 编辑:程序博客网 时间:2024/06/06 14:28
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
开始这么写的,但是出现Time Limit Exceeded:
public class Solution { public String reverseWords(String s) { String result="";String[] splits=s.split(" ",-1);int tag=0;//标志现在还没有出现最末尾的单词for(int i=splits.length-1;i>=0;i--){if(!splits[i].equals("")){System.out.println(splits[i]);if(tag==0)//还没有单词被加到result{result=result+splits[i];tag=1;}else //之前已有单词加入result,剩余单词前面加空格{result=result+" "+splits[i];}}}return result; }}
后来程序改成如下,Accepted:
public class Solution { public String reverseWords(String s) { StringBuffer result=new StringBuffer("");String[] splits=s.split(" ",-1);int tag=0;//标志现在还没有出现最末尾的单词for(int i=splits.length-1;i>=0;i--){if(!splits[i].equals("")){if(tag==0)//还没有单词被加到result{result=result.append(splits[i]);tag=1;}else //之前已有单词加入result,剩余单词前面加空格{result=result.append(" "+splits[i]);}}}return result.toString(); }}
后来看答案:
public String reverseWords(String s) { StringBuilder reversed = new StringBuilder(); int j = s.length(); for (int i = s.length() - 1; i >= 0; i--) { if (s.charAt(i) == ' ') { j = i; } else if (i == 0 || s.charAt(i - 1) == ' ') { if (reversed.length() != 0) { reversed.append(' '); } reversed.append(s.substring(i, j)); } } return reversed.toString();}
三种算法的区别在于使用的数据类型不同:String,StringBuffer,StringBuilder
区别如下:
String 类型是不可变的,当执行
String s="a";String s=s+"b";
时,后一句又开辟了一块不同于前一句的空间,每一个看似修改String 的方法都创建了一个全新的String 对象,而最初的String 对象则丝毫未动,这样如果数据量较多时,空间消耗较大,容易造成Time Limit Exceeded错误。
StringBuffer 是可变的字符串,执行
StringBuffer s=new StringBuffer("a");s.append("ssss");时,不是新开辟一块空间,而是在原有空间基础上继续连接字符串,比String 方式大大节省了空间。
0 0
- Reverse words in a string.
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- TreeSet用法
- 一个提供Android各历史版本在线源码的网址
- Android -流媒体编译
- struts2返回List json
- 十大常用数据结构
- Reverse Words in a String
- 黑马程序员_java集合类
- myeclipse安装新浪sae-eclipse插件
- Audio的raw 和 pcm的问题
- Android APK反编译详解(附图)
- mongodb
- Connect教程系列--响应式布局(一)
- RevitAPI外部服务介绍(ExternalService)
- Opencv step by step - 阈值化