找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

[Indeed] Indeed 电面

[复制链接]

10

主题

3

精华

340

积分

高级会员

Rank: 3Rank: 3

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

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

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

x
一个三姐, 一道老题
( V+ W3 E' _# z先写reverse string,  转换成char arry 再翻转
$ n; r0 d5 J; A- v# N- \第二部 string 里包含> 这种entity 要求翻转是这个作为一个整体
3 o$ D: \: M. q' C( _5 u+ o5 Sex: >abc>* Q- c; b: r# L# K3 g: C
我是先把整体翻转,然后用 hashmap存每一个;&对的位置,然后把这些entity再翻转,然后三姐也满意,然后让我说说每一步的复杂度和整体复杂度。
- W, W  K- T! |, b$ N[code]public class Solution {1 g3 A1 K3 Y( e& O/ \- K
    public String reverse(String str){
  C! U- p. X& J, X        if (str == null || str.length() == 0) {' u3 g9 ~) V! O$ G* v7 L4 n4 X/ r# I
            return "";
9 e- b# r. L$ L3 s9 Q7 f        }
1 k/ Y5 z3 M% U( C8 P        char[] arr = str.toCharArray();
# h8 g+ S6 t& C" b2 W/ r: X        swap(arr, 0, arr.length - 1);6 w. f7 T. H( l1 Y3 W7 k
        HashMap<Integer, Integer> map = new HashMap<>();8 W- n4 y* Q/ e
        int start = -1;, F6 H& W$ |6 F  j' G
        for (int i = 0 ; i < arr.length; i++) {
  [% o/ L; t. \            if (arr【i】 == ';') {  i' J+ l  D0 v0 v/ L5 x
                start = i;
; E+ [4 G% p5 v7 h            }
! a0 p- S& D6 d            if (arr【i】 == '&' && start != -1 ){9 o, ]" \; R  b0 X  c
                map.put(start, i);  P/ Y6 ~5 K6 S4 t% c$ y
                start = -1;  y  q' `8 P- O" I2 [8 C; C- L
            }+ G! C! C8 u; r4 x3 V
        }
- R1 t6 A+ _' @# J- D3 b5 l4 ^8 R        for (int key: map.keySet()) {3 f( R& d! X# U2 p8 e- C# O1 [
            swap(arr, key, map.get(key));! z" d! H, ~$ Z  K. i1 E8 Q) `
        }9 h; J; E! }# Q! [+ W
        return new String(arr);
1 u6 t/ ~9 R% T+ m    }% P% W' E- a% m+ r7 @
- y9 j2 M, s2 y/ C$ m" T  b% v
    public void swap(char[] nums, int beg, int end){
* q7 G. P' e- q, n5 w        while (beg < end) {
/ V. a$ C  A# A3 ~! {% Z9 \            char tmp = nums[beg];( b5 c  Q$ x: u' S& T+ o0 r
            nums[beg] = nums[end];1 ~. D5 N8 D, h# s8 p- I- j
            nums[end] = tmp;1 m4 G; |0 ~7 h+ f5 M; q
            beg++;
' @2 E% _6 E9 I8 }            end--;
9 X  R! I7 i. u& G' W8 z        }9 C) t. V  D) K! U  S
    }
% k, s/ i" t' s# n( W% B! z, V# s% A0 c6 ^5 R
    public static void main(String[] args) {
$ X# G" I9 \, T8 X        Solution s = new Solution();
- h9 y2 Y# |  a8 R$ v- e        System.out.println(s.reverse("123% p6 G1 y3 D& b; Q5 i6 S
0 V8 |4 ?- [. F  f9 f
补充内容 (10-26-2015 11:12 PM):
$ M* H4 J  x4 N7 b# 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专业!
回复 支持 反对

使用道具 举报

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

本版积分规则

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