Problem151: Reverse Words in a String
这道题非常disgusting,有无数的corner cases要去考虑。但这种题目是准备的关键。
思路
这道题的思路有很多,第一种是考虑各种的corner cases,比如首尾有没有space啦,中间隔着很多space啦等等。但是实际上正面做的时候,还是感觉到很难把所有的情况都考虑到,容易出错。
第二种思路,类似于快慢指针的办法。先设置一个start指针,从末尾往前走,因为有可能有trailing spaces,所以真正当他遇到第一个不为空的character的时候,这时候,我们设置另一个指针end。接下来,让start指针继续向前走,直到start遇到下一个空格,这时,start和end之间的词就被定位了,它将是answer的第一个词。以此类推。
易错点
空指针查看是非常必要的
substring 的index问题 substring(beginIndex, endIndex); beginIndex-包含;endIndex-不包含 [a, b)
这道题里,
start + 1
是因为start已经挪到了空白处;end + 1
是因为右边是开区间去除空白的函数
trim()
StringBuider的用处
创建一个StringBuilder
不断地append这个builder
再把StringBuilder变成字符串
char 和 String 的区别 如果用
' '
表示的是char,相反用" "
表示的是String要把 StringBuilder 放在外面,这样才不会因为每次新建一个StringBuilder 而丢失结果
Last updated