@@ -137,22 +137,23 @@ public List<Long> decode(final String id) {
137
137
.append (this .alphabet , 0 , offset )
138
138
.reverse ()
139
139
.toString ();
140
- String slicedId = id .substring (1 );
141
140
142
- while (!slicedId .isEmpty ()) {
141
+ int index = 1 ;
142
+ while (true ) {
143
143
final char separator = alphabet .charAt (0 );
144
- final String [] chunks = slicedId .split (String .valueOf (separator ), 2 );
145
- final int chunksLength = chunks .length ;
146
- if (chunksLength > 0 ) {
147
- if (chunks [0 ].isEmpty ()) {
148
- return ret ;
149
- }
150
- ret .add (toNumber (chunks [0 ], alphabet .substring (1 )));
151
- if (chunksLength > 1 ) {
152
- alphabet = shuffle (alphabet );
153
- }
144
+ int separatorIndex = id .indexOf (separator , index );
145
+ if (separatorIndex == -1 ) {
146
+ separatorIndex = id .length ();
147
+ } else if (index == separatorIndex ) {
148
+ break ;
149
+ }
150
+ ret .add (toNumber (id , index , separatorIndex , alphabet .substring (1 )));
151
+ index = separatorIndex + 1 ;
152
+ if (index < id .length ()) {
153
+ alphabet = shuffle (alphabet );
154
+ } else {
155
+ break ;
154
156
}
155
- slicedId = chunksLength > 1 ? chunks [1 ] : "" ;
156
157
}
157
158
return ret ;
158
159
}
@@ -230,15 +231,13 @@ private StringBuilder toId(long num, final String alphabet) {
230
231
return id .reverse ();
231
232
}
232
233
233
- private long toNumber (final String id , final String alphabet ) {
234
- char [] chars = alphabet .toCharArray ();
235
- int charLength = chars .length ;
234
+ private long toNumber (final String id , final int fromInclusive , final int toExclusive , final String alphabet ) {
235
+ int alphabetLength = alphabet .length ();
236
236
long number = 0 ;
237
-
238
- for ( char c : id .toCharArray ()) {
239
- number = number * charLength + alphabet .indexOf (c );
237
+ for ( int i = fromInclusive ; i < toExclusive ; i ++) {
238
+ char c = id .charAt ( i );
239
+ number = number * alphabetLength + alphabet .indexOf (c );
240
240
}
241
-
242
241
return number ;
243
242
}
244
243
0 commit comments