|
亲!马上注册或者登录会查看更多内容!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Sophia 于 10-15-2015 04:45 PM 编辑
* j/ F. h: I0 {- o- u4 \; D8 [4 g; V9 `9 R
OJ 上的题目:http://www.meetcoder.com/problem.php?id=4
+ m+ w! ~8 ^& D; _; @' j- S* T: i$ }" N; s* p" L
做法:从高位往低位扫,如果遇上比高位要高的数字,则互相置换,如果最高位数字已经是最大,则不置换,扫次高位,以此类推。 Q; ~1 G6 [( |/ q( ~- V+ G
/ Y: J' y5 H8 h1 ^2 t2 T
代码:
; }3 M) m! A9 ~' I7 \- h0 K* n- class Solution {$ C5 _: R, G7 R; ~1 r
- public int maximizeResult(int n) {
3 J- |. D0 z7 M8 b - if(n<=9) return n;
8 X; k4 y7 L7 D( T -
* v# O" }* r- w9 m - String t = String.valueOf(n);
+ |, K: k% y7 l& T" [7 a- i" | - StringBuilder sb = new StringBuilder(t);
0 E) G1 [2 W% W4 L7 m" V2 C - for(int i=0;i<t.length();i++){
7 G% _; `: l; ~2 ? P S8 m1 B - String cu = detectNSwap(i,sb,t);& m% {1 Y8 B/ M: p/ z+ N4 C3 A8 J
- if(cu.length() > 0)9 d; z" ~5 R9 c1 p; B; t1 z
- return Integer.parseInt(cu);
. ~& y1 G W/ `9 [/ b& I# Y - }
2 }! z; I! ]3 l; ? - return n;( j8 V A$ y& a. G3 \ p/ x& l
- Q+ M3 H8 t' ^) N+ W$ q
- }
`% o& M0 v- }: K7 \# i. t - M) `7 h( K) W7 s2 h. S
- private String detectNSwap(int index,StringBuilder sb, String t){7 D5 v- i t% V6 Y
- int max=index;
9 ~9 M% [0 n* Q - char prev = t.charAt(index);
0 J% A1 q! F% }0 ]7 U - for(int i=index+1;i<t.length();i++){! h+ [4 T# G7 s- N0 o( G
- char curr = t.charAt(i);" T& {! @: w0 g
- if(curr > prev){
% v' Q0 r$ L0 L% ?* ~ - prev = curr;& `% O8 l+ m9 z% n
- max = i;
' I' p- r* J4 N2 i1 b { - }
4 e- c' ~3 A" ]: X - }
( M: Q' u: j4 n9 x) G2 k9 U -
6 |' U }+ m9 ^# ^+ k% W* q - if(max == index) return "";; x9 F7 V& L4 W9 i4 @0 _
- ( g# d+ s/ e& L- d
- char head = t.charAt(index);
/ K* `8 g; i; c: h- k - char swit = t.charAt(max);' ]) b+ ]% ]$ X- F" v
- sb.setCharAt(head,prev);, t L, u4 L% s6 Y; f! ?. {
- sb.setCharAt(index,head);
1 C; y; g3 _- q- v3 c - 4 B0 W7 e2 `# D3 v5 A2 h
- return sb.toString();
g: e: O; n1 } -
; }7 F0 f" ^8 m& o) Q+ k" w A - } ]3 y! b7 `1 y* ]# B
- }
复制代码 得出来的结果是这样的,有些搞不清是什么问题,会导致空输出?
" I0 _( Y L+ t. r3 @=================/test10.outExpected Output:964663874-----------------Your Output:
' n1 i) d5 \$ p$ ?( `0 @ |
|