当前在线人数6062
首页 - 分类讨论区 - 海外生活 - 待字闺中版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
问一道uber onsite题目
[版面:待字闺中][首篇作者:frederickyl] , 2015年08月16日12:00:53 ,1306次阅读,23次回复
来APP回复,赚取更多伪币 关注本站公众号:
[首页] [上页][下页][末页] [分页:1 2 ]
frederickyl
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: frederickyl (frederickyl), 信区: JobHunting
标  题: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 12:00:53 2015, 美东)

reverse string的变种。 只reverse word不reverse punctuation。比如 "this,,,is.
a word" -> "word,,,a.is this"
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
jobhunter123
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: jobhunter123 (jobhunting), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 12:04:20 2015, 美东)

同问
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
database
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: database (《※★※§Hey§※★※》), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 12:10:57 2015, 美东)

split成两个list. reverse word list, merge.

【 在 frederickyl (frederickyl) 的大作中提到: 】
: reverse string的变种。 只reverse word不reverse punctuation。比如 "this,,,
is.
: a word" -> "word,,,a.is this"



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 12:32:22 2015, 美东)

如果转成list的话,一个就够了
头尾两个index,swap string only and skip symbols

【 在 database (《※★※§Hey§※★※》) 的大作中提到: 】
: split成两个list. reverse word list, merge.
: is.




--
※ 修改:·lolhaha 於 Aug 16 13:07:31 2015 修改本文·[FROM: 74.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
database
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: database (《※★※§Hey§※★※》), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 12:57:28 2015, 美东)

这是c时代的做法。现在string都是immutable的。总之还要在复制出去,在复制回来。
不差那点代价了。
这题一般来说,不应该考。以前c程序用指针是重要技巧。现在基本没人用了。
【 在 lolhaha (长期骑驴,一直找马) 的大作中提到: 】
: 如果转成list的话,一个就够了
: 头尾两个指针,swap string only and skip symbols



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:02:56 2015, 美东)

sorry , what I said is index of the list,not pointer
那你merge怎么考虑顺序呢
上code吧
【 在 database (《※★※§Hey§※★※》) 的大作中提到: 】
: 这是c时代的做法。现在string都是immutable的。总之还要在复制出去,在复制回来。
: 不差那点代价了。
: 这题一般来说,不应该考。以前c程序用指针是重要技巧。现在基本没人用了。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
frederickyl
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: frederickyl (frederickyl), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:22:31 2015, 美东)

大牛可以给个code吗?一直没写出来,谢谢!
【 在 lolhaha (长期骑驴,一直找马) 的大作中提到: 】
: 如果转成list的话,一个就够了
: 头尾两个index,swap string only and skip symbols



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
rebo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: rebo (w-k), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:29:22 2015, 美东)

O(N)原地没有办法解吧?
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:32:10 2015, 美东)

弄到一个string list里,然后再生成结果也写不出来吗?

【 在 frederickyl (frederickyl) 的大作中提到: 】
: 大牛可以给个code吗?一直没写出来,谢谢!



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:34:45 2015, 美东)

in place的话就得移来移去,很费时间..
【 在 rebo (w-k) 的大作中提到: 】
: O(N)原地没有办法解吧?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
lestrois
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: lestrois (lestrois), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:42:59 2015, 美东)

双指针也可解,left找symbol,right找字符串,两个指针都扫描整个字符串。

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 166.]

 
frederickyl
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: frederickyl (frederickyl), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:46:03 2015, 美东)

我是说in place的写不出来
【 在 lolhaha (长期骑驴,一直找马) 的大作中提到: 】
: 弄到一个string list里,然后再生成结果也写不出来吗?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
frederickyl
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: frederickyl (frederickyl), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:51:19 2015, 美东)

写了一个用list的版本
    public static String reverse(String s) {
        List<String> list = new ArrayList<String>();
        boolean word = Character.isLetter(s.charAt(0));
        int i = 0, n = s.length(), start = 0;
        while(i < n) {
            char cur = s.charAt(i);
            while(i < n && ((word&&Character.isLetter(cur)) || (!word&&
Character.isLetter(cur)))) {
                ++i;
            }
            list.add(s.substring(start, i));
            start = i;
            word = !word;
        }
        i = 0;
        int j = list.size()-1;
        while(i < j) {
            if(!Character.isLetter(list.get(i).charAt(0))) {
                ++i;
                continue;
            }
            if(!Character.isLetter(list.get(j).charAt(0))) {
                --j;
                continue;
            }
            String tmp = list.get(i);
            list.set(i, list.get(j));
            list.set(j, tmp);
            ++i;
            --j;
        }
        StringBuilder res = new StringBuilder();
        for(String e : list) res.append(e);
        return res.toString();
    }
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
rebo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: rebo (w-k), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:52:41 2015, 美东)

不是原地的话这题还有啥point,我大可再弄个buffer然后原来string两头扫放进去不
就行了。。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
database
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: database (《※★※§Hey§※★※》), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 13:56:18 2015, 美东)

如果是split到list.那么就是看regex split出两个还是一个lis的问题了。
如果split到一个list,if isword, 指针交换,
如果split到两个lists, merge splited word和 splitters.

python的话,

>>> re.split('(W+)', 'this,,,is.a word')
['this', ',,,', 'is', '.', 'a', ' ', 'word']
剩下的没有什么难度了。
【 在 lolhaha (长期骑驴,一直找马) 的大作中提到: 】
: sorry , what I said is index of the list,not pointer
: 那你merge怎么考虑顺序呢
: 上code吧



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

 
database
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: database (《※★※§Hey§※★※》), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 14:06:49 2015, 美东)

string你不可能写inplace的。
要是非要上效率的。就是两个指针,从尾部读word,从头部读sperator.
char[] char_arr = new char[len(s)];

int i = len(s) -1;
int j = 0;
// read word from end and save to char_arr
while (i > -1 && j < len(s)){
// read word from end and save to char_arr reverse

// read separtor from begin and save to char_arr
}

return new StringBuilder(char_arr).toString()


【 在 frederickyl (frederickyl) 的大作中提到: 】
: 我是说in place的写不出来



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 17 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 14:12:25 2015, 美东)

我们都知道java的string 是immutable的
我们就是用string.toCharArray()转成字符数组...

【 在 database (《※★※§Hey§※★※》) 的大作中提到: 】
: string你不可能写inplace的。
: 要是非要上效率的。就是两个指针,从尾部读word,从头部读sperator.
: char[] char_arr = new char[len(s)];
: int i = len(s) -1;
: int j = 0;
: // read word from end and save to char_arr
: while (i > -1 && j < len(s)){
: // read word from end and save to char_arr reverse

: // read separtor from begin and save to char_arr
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
lestrois
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 18 ]

发信人: lestrois (lestrois), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 14:27:14 2015, 美东)

C# Solution. Tested. 2-Pointer in space O(n) time

private string reverse(string s){
    StringBuilder result = new StringBuilder();
    for (int left = 0, right = s.Length - 1; left < s.Length || right >= 0;){
        while (left < s.Length && !char.IsLetter(s[left]))
            result.Append(s[left++]);
        while (right >= 0 && !char.IsLetter(s[right]))
            right--;
        int newRight = right;
        while (newRight > 0 && char.IsLetter(s[newRight - 1]))
            newRight--;
        if (newRight >= 0){
            result.Append(s.Substring(newRight, right - newRight + 1));
            right = newRight - 1;
        }
        while (left < s.Length && char.IsLetter(s[left]))
            left++;
    }
    return result.ToString();
}


【 在 lestrois (lestrois) 的大作中提到: 】
: 双指针也可解,left找symbol,right找字符串,两个指针都扫描整个字符串。







--
※ 修改:·lestrois 於 Aug 16 14:33:49 2015 修改本文·[FROM: 70.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 166.]

 
lolhaha
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 19 ]

发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 14:28:43 2015, 美东)

你这个work???
第一遍单词保持原状,然后整个reverse
现在你的单词是reversed的吧? punction的位置似乎也不符合要求

【 在 uafl () 的大作中提到: 】
: c/c++的code好像不受欢迎:
: #include <iostream>
: #include <string>
: using namespace std;
: char* GetAlphabet(char* str) {
:     while ('
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 74.]

 
database
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 20 ]

发信人: database (《※★※§Hey§※★※》), 信区: JobHunting
标  题: Re: 问一道uber onsite题目
发信站: BBS 未名空间站 (Sun Aug 16 14:29:46 2015, 美东)

我写的那段是不要 call tocharAarry
思路是allocate一块空间,然后从原来的string上读,然后交叉取词和sperators
merge入新的char array.
【 在 lolhaha (长期骑驴,一直找马) 的大作中提到: 】
: 我们都知道java的string 是immutable的
: 我们就是用string.toCharArray()转成字符数组...



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 172.]

[首页] [上页][下页][末页] [分页:1 2 ]
[快速返回] [ 进入待字闺中讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996