1
lhx2008 2018-03-23 08:15:37 +08:00 via Android
split 之后,递归到尾部,返回的时候拼接
|
3
cloverii 2018-03-23 08:28:12 +08:00 via Android
我某次三面的时候被问过这题,所以这是个考栈的题么…我直接像 1L 那样说了 因为面试官说让我用 Python 写…
|
4
lhx2008 2018-03-23 08:34:15 +08:00 via Android 1
split 之后,头尾之间交换也可以,扫 1.5 次,空间复杂度更优
|
5
gbin OP @cloverii 我倒觉得用递归比用栈好吧,二者空间复杂度都是 O(n),递归时间复杂度 O(n),栈 O(2n)。我看到给的提示说有更厉害的方法只需 O(1),只是没去查过,看看有没有大神提出来吧。
|
6
66450146 2018-03-23 08:41:18 +08:00 via iPhone 6
整个字符串反转,再扫一遍每个词反转即可,空间 O1
|
7
zc666 2018-03-23 08:42:10 +08:00 via iPad
python 的话可以直接 split 之后数组下标从-1 开始然后下标每次递减 1,当出现 list index out of range 错误之后即是倒序遍历完了
|
8
iEverX 2018-03-23 08:57:03 +08:00 via Android
通常还会加上原地的限制,用 split,面试官一般不会满意的。当然 python 就没办法了
|
11
hx1997 2018-03-23 09:06:57 +08:00 via Android
分割之后倒着拼接,或者栈,只会这俩
|
13
zoffy 2018-03-23 09:23:21 +08:00 1
js:
"the sky is blue".split(' ').reverse().join(' ') |
15
tongz 2018-03-23 09:51:37 +08:00
php:
$str = "the sky is blue"; echo implode(' ', array_reverse(explode(' ', $str))); |
16
cloverii 2018-03-23 10:35:36 +08:00 via Android
@gbin 发现我把一楼看错了…并不知道怎么递归…重翻了一下面经,发现面试官这题问得很随意,于是我也很随意的说 split 一下再倒着输出,他没有进一步问了…(我一直觉得是因为我说用 py 写过点小爬虫,所以他问了我一个 sb 问题看我到底会不会写 py,现在突然觉得好像不是那么回事了…可能这就是我过了面试但是钱并不多的原因吧[手动狗头]
|
17
zqqian 2018-03-23 10:48:36 +08:00 via Android
lz 可以出点不这么简单的题么。。。。。
|
18
domty 2018-03-23 11:01:58 +08:00
变形的翻转字符串。
|
19
muziki 2018-03-23 11:42:30 +08:00
fn main() {
let s = "the sky is blue"; let rev_s = s.split_whitespace().rev().collect::<Vec<&str>>().join(" "); println!("{:?}", rev_s); } |
22
snw 2018-03-23 12:56:19 +08:00 via Android
可以把题目改成字符串大于内存,但每个词小于内存😂
|
24
pagict 2018-03-23 13:38:52 +08:00
```python
' '.join(line.split()[::-1]) ``` |
25
yianing 2018-03-23 15:25:26 +08:00
#24 估计是最简单的了
|
26
WilliamLin 2018-03-23 18:19:18 +08:00 via Android
Python 的话就用 split 加 reverse 加 join
|