File tree Expand file tree Collapse file tree 3 files changed +62
-45
lines changed Expand file tree Collapse file tree 3 files changed +62
-45
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
- public boolean confusingNumber (int N ) {
3
- if (N == 0 ) {
4
- return false ;
5
- }
6
- int copy = N ;
7
- StringBuilder sb = new StringBuilder ();
8
- while (N > 0 ) {
9
- int temp = N % 10 ;
10
- if (temp == 6 || temp == 9 ) {
11
- sb .append (temp == 6 ? 9 : 6 );
12
- }
13
- else if (temp == 0 || temp == 1 || temp == 8 ) {
14
- sb .append (temp );
15
- }
16
- else {
17
- return false ;
18
- }
19
-
20
- N /= 10 ;
21
- }
22
-
23
- return Integer .parseInt (sb .toString ()) != copy ;
2
+ public boolean confusingNumber (int N ) {
3
+ int newNum = 0 ;
4
+ int copy = N ;
5
+ while (N > 0 ) {
6
+ int rem = N % 10 ;
7
+ N /= 10 ;
8
+ if (rem == 0 || rem == 1 || rem == 8 ) {
9
+ newNum = newNum * 10 + rem ;
10
+ }
11
+ else if (rem == 6 || rem == 9 ) {
12
+ newNum = newNum * 10 + (rem == 6 ? 9 : 6 );
13
+ }
14
+ else {
15
+ return false ;
16
+ }
24
17
}
18
+ return newNum != copy ;
19
+ }
25
20
}
Original file line number Diff line number Diff line change 1
- public class Solution {
2
- public char findTheDifference (String s , String t ) {
3
- String s1 = s ;
4
- String s2 = t ;
5
- s1 = sortString (s1 );
6
- s2 = sortString (s2 );
7
-
8
- char ans = '0' ;
9
-
10
- for (int i =0 ;i < s1 .length ();i ++) {
11
- if (s2 .charAt (i ) != s1 .charAt (i )) {
12
- ans = s2 .charAt (i );
13
- break ;
14
- }
15
- }
16
- return ans == '0' ? s2 .charAt (s2 .length ()-1 ) : ans ;
1
+ class Solution {
2
+ public char findTheDifference (String s , String t ) {
3
+ int [] counter = new int [26 ];
4
+ for (char c : s .toCharArray ()) {
5
+ counter [c - 'a' ]++;
17
6
}
18
-
19
- public String sortString (String s ) {
20
- char [] chars = s .toCharArray ();
21
- Arrays .sort (chars );
22
- String sorted = new String (chars );
23
- return sorted ;
7
+ for (char c : t .toCharArray ()) {
8
+ if (counter [c - 'a' ] == 0 ) {
9
+ return c ;
10
+ }
11
+ counter [c - 'a' ]--;
24
12
}
25
- }
13
+ return '-' ;
14
+ }
15
+ }
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public String sortString (String s ) {
3
+ int [] counter = new int [26 ];
4
+ for (char c : s .toCharArray ()) {
5
+ counter [c - 'a' ]++;
6
+ }
7
+ StringBuilder sb = new StringBuilder ();
8
+ while (sb .length () != s .length ()) {
9
+ addLowerToHiger (sb , counter );
10
+ addHigherToLower (sb , counter );
11
+ }
12
+ return sb .toString ();
13
+ }
14
+
15
+ private void addLowerToHiger (StringBuilder sb , int [] counter ) {
16
+ for (int i = 0 ; i < 26 ; i ++) {
17
+ if (counter [i ] != 0 ) {
18
+ sb .append ((char ) (97 + i ));
19
+ counter [i ]--;
20
+ }
21
+ }
22
+ }
23
+
24
+ private void addHigherToLower (StringBuilder sb , int [] counter ) {
25
+ for (int i = 25 ; i >= 0 ; i --) {
26
+ if (counter [i ] != 0 ) {
27
+ sb .append ((char ) (97 + i ));
28
+ counter [i ]--;
29
+ }
30
+ }
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments