找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

[Indeed] Indeed 电面

[复制链接]

10

主题

3

精华

340

积分

高级会员

Rank: 3Rank: 3

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

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

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

x
一个三姐, 一道老题
' N- u  e  z1 l. i, t) s6 x先写reverse string,  转换成char arry 再翻转6 q0 y* W4 c# a2 f2 O1 Y8 ^
第二部 string 里包含> 这种entity 要求翻转是这个作为一个整体
/ t( O+ E& R2 j# f. I5 j/ o8 H+ Sex: >abc>
) o- \$ s8 K1 O! \9 z0 O我是先把整体翻转,然后用 hashmap存每一个;&对的位置,然后把这些entity再翻转,然后三姐也满意,然后让我说说每一步的复杂度和整体复杂度。
3 n1 d$ C' V6 R! ?. f[code]public class Solution {) y$ ?; I. u$ j, o6 Y' Y) i
    public String reverse(String str){
  v* o5 m( D0 v3 D% l+ r* m  x) G        if (str == null || str.length() == 0) {
  j% `0 J2 W7 F9 N            return "";& K7 I9 h* o& r4 p
        }3 m" v; |2 U* f! k
        char[] arr = str.toCharArray();
9 H9 D& E) k8 F! ^  p        swap(arr, 0, arr.length - 1);4 u( N) q" J! ?9 K0 m; W1 J
        HashMap<Integer, Integer> map = new HashMap<>();
5 i' A  x) d9 ?% B3 B4 B        int start = -1;; [1 P* z; t* |. A) D6 k: X9 c
        for (int i = 0 ; i < arr.length; i++) {4 o% s- Q$ T3 _
            if (arr【i】 == ';') {, g( Z" h6 Y: L. A
                start = i;
, H5 E3 o8 B! r9 \            }
( t; S) U$ Z7 O) ~+ f            if (arr【i】 == '&' && start != -1 ){
8 Z6 i9 G5 f8 a+ h/ z                map.put(start, i);1 Z- V3 G" ]- y4 `+ w( b* a7 Y
                start = -1;& H8 u& w" V; Q: w
            }8 H3 j7 w  E9 T& @& Y
        }0 V2 x9 y, ~. f, K3 i
        for (int key: map.keySet()) {
+ |5 g! M& |) g/ k            swap(arr, key, map.get(key));  ~; U( h8 w) D8 L1 W2 ]
        }
8 K( d7 c% j- ^$ ^$ R0 s9 O( q        return new String(arr);! H! }5 X/ t, u: J( C$ B. i
    }
+ r- W# S" Q! k8 r: k! e! [9 n; p
    public void swap(char[] nums, int beg, int end){2 Q7 Q7 w% M* R4 k
        while (beg < end) {
; p* \2 r+ L1 i, V% T% @( e" Q            char tmp = nums[beg];* Q0 R* u0 r, q) @
            nums[beg] = nums[end];/ @1 y3 ^# e$ v: O4 e2 A, C2 |
            nums[end] = tmp;8 w4 L  {) {: i# m6 ~; W
            beg++;
4 L& F9 Z, |3 k. u3 J            end--;4 e9 ?+ R! ~6 k# ~! Q' `
        }1 T9 G$ U: b, l8 w) v
    }: i( T1 B. H, u* X% ~
2 {3 `5 n0 b- l2 `! h7 a
    public static void main(String[] args) {3 u* K6 K4 Z( Z/ Q
        Solution s = new Solution();
) u% H% i5 l" p  D, V' f# _2 Q& w6 J        System.out.println(s.reverse("123$ h' l& A0 U' |  c3 H

% V. b% g* N+ s- |) h; C! y2 s补充内容 (10-26-2015 11:12 PM):
# ~7 u1 T( @, n4 A% `" d9 d2 c重新贴代码了。

评分

参与人数 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专业!
回复 支持 反对

使用道具 举报

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

本版积分规则

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