File tree 1 file changed +17
-10
lines changed
1 file changed +17
-10
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public String customSortString (String order , String s ) {
3
- Map <Character , Integer > map = new HashMap <>();
4
- int position = 1 ;
3
+ Map <Character , Integer > frequency = new HashMap <>();
4
+ for (char c : s .toCharArray ()) {
5
+ frequency .put (c , frequency .getOrDefault (c , 0 ) + 1 );
6
+ }
7
+ StringBuilder sb = new StringBuilder ();
5
8
for (char c : order .toCharArray ()) {
6
- map .put (c , position ++);
9
+ int count = frequency .getOrDefault (c , 0 );
10
+ while (count -- > 0 ) {
11
+ sb .append (c );
12
+ }
13
+ frequency .put (c , 0 );
14
+ }
15
+ for (Character key : frequency .keySet ()) {
16
+ int count = frequency .getOrDefault (key , 0 );
17
+ while (count -- > 0 ) {
18
+ sb .append (key );
19
+ }
7
20
}
8
- return s .chars ()
9
- .mapToObj (c -> (char ) c )
10
- .sorted (Comparator .comparing (o -> map .getOrDefault (o , 0 )))
11
- .collect (Collector .of (StringBuilder ::new ,
12
- StringBuilder ::append ,
13
- StringBuilder ::append ,
14
- StringBuilder ::toString ));
21
+ return sb .toString ();
15
22
}
16
23
}
You can’t perform that action at this time.
0 commit comments