找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7531|回复: 9
收起左侧

[Indeed] Indeed 电面

[复制链接]

10

主题

3

精华

340

积分

高级会员

Rank: 3Rank: 3

积分
340
发表于 10-26-2015 01:17 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一个三姐, 一道老题
. u3 O9 D& k6 j! O5 W+ V先写reverse string,  转换成char arry 再翻转
/ v; D# M' K1 V5 {第二部 string 里包含> 这种entity 要求翻转是这个作为一个整体4 O& W) \3 x- W/ g7 S  r2 ]: ]! R
ex: >abc>$ o& `, v/ I, v: H% Y% Q
我是先把整体翻转,然后用 hashmap存每一个;&对的位置,然后把这些entity再翻转,然后三姐也满意,然后让我说说每一步的复杂度和整体复杂度。
0 f7 T3 V) D6 k, o. p" \/ U$ N[code]public class Solution {" B/ Z4 f$ N4 R' V5 q& V6 Y
    public String reverse(String str){+ G% ?) i. G9 c2 K' |2 j
        if (str == null || str.length() == 0) {* h4 t) m4 s4 s) X2 P) `( @
            return "";
1 J0 @& X) J" o! K        }) i4 M7 S" Y2 T; K  \6 S  g
        char[] arr = str.toCharArray();
* _4 w% L5 A3 p: F0 a9 P+ \( }1 ?        swap(arr, 0, arr.length - 1);
1 J  E  Y) r% ~1 _. r$ `        HashMap<Integer, Integer> map = new HashMap<>();
; B, {% k- L# p        int start = -1;! q. t( u, Q  `, w6 D5 D) x/ Q
        for (int i = 0 ; i < arr.length; i++) {
1 O1 J! a5 k- g* E: f, p6 U2 b+ _            if (arr【i】 == ';') {' K  E' F1 v' H% H1 ]( Y) y. T
                start = i;2 m0 m8 z0 N6 J5 M
            }9 y; L. x* W) V
            if (arr【i】 == '&' && start != -1 ){
9 J7 c0 n6 m- x                map.put(start, i);0 L1 x7 x, z# p" g2 S+ E' n! B1 K
                start = -1;
( @! {8 S. ?, L2 g9 t2 R            }
; |0 G: \% U5 [) C; P- d) j2 ~        }$ e: R  Z7 @7 C( F
        for (int key: map.keySet()) {
, A) I& I+ j- q# L. h( @0 b- |0 q            swap(arr, key, map.get(key));
9 d, O( j5 e4 l        }
! c$ z& a+ X$ D' J/ i4 V" e        return new String(arr);$ ]: {- ~9 J  h. |
    }# ~4 i$ ^2 F) x$ F" w$ d8 ?& v

% p/ O4 b. a. P$ w    public void swap(char[] nums, int beg, int end){
& m  m# U  K: [0 _% r" C4 f        while (beg < end) {; ?; {. ~  \" `" M
            char tmp = nums[beg];, F+ N! c! |7 V8 H4 L  |/ `
            nums[beg] = nums[end];
. s) x5 H. Z# f/ i# W, e            nums[end] = tmp;  d% E8 W% O8 z8 v, \( u
            beg++;  K4 H: I  ]- |) _9 v
            end--;$ e" q+ z1 m" A7 `6 B, Q6 q
        }
8 F" ^% X- F/ z; r/ M2 P    }* h- G! V3 s2 Z3 {( }% B6 z! O

8 A/ a& Z7 T6 a: ^8 T3 V- E; H& C    public static void main(String[] args) {
# z6 o# L& W" O, K        Solution s = new Solution();) s' J. ^; V+ w9 ~
        System.out.println(s.reverse("123
" Y+ r; V0 t( ?: t
1 F  `/ ^$ `0 f补充内容 (10-26-2015 11:12 PM):- A2 b) {3 _9 V: I+ u
重新贴代码了。

评分

参与人数 1金钱 +6 收起 理由
Sophia + 6 给您点个赞!大米满满送上!

查看全部评分

12

主题

5

精华

249

积分

高级会员

Rank: 3Rank: 3

积分
249

最佳新人

发表于 10-26-2015 05:40 PM | 显示全部楼层
请问是leetcode上面的这道题吗?https://leetcode.com/problems/reverse-words-in-a-string/
回复 支持 反对

使用道具 举报

发表于 10-26-2015 08:40 PM | 显示全部楼层
感谢您的面经分享~~~祝您面试工作学习顺利~~~大米积分满满送上~~~
我们始终相信IT会持续改造甚至创新传统行业,我们始终全面看好咱们的CS专业!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表