File tree 3 files changed +83
-10
lines changed
src/main/java/com/rampatra
3 files changed +83
-10
lines changed Original file line number Diff line number Diff line change 1
- package com .rampatra .misc ;
1
+ package com .rampatra .bits ;
2
2
3
3
/**
4
- * Created by IntelliJ IDEA.
4
+ * {@code >>} shifts bits to right filling left bits with the left most
5
+ * bit (most significant bit). Also called signed right shift.
6
+ * {@code >>>} shifts bits to the right filling left bits
7
+ * with 0. Also called unsigned right shift.
5
8
*
6
- * @author: ramswaroop
7
- * @date: 6/2/15
8
- * @time: 3:26 PM
9
- */
10
-
11
- /**
12
- * {@code >>} shifts bits to right filling left bits with the left most bit (most significant bit)
13
- * {@code >>>} shifts bits to the right filling left bits with 0
9
+ * @author rampatra
10
+ * @since 6/2/15
14
11
*/
15
12
public class RightShiftOperator {
16
13
Original file line number Diff line number Diff line change
1
+ package com .rampatra .bits ;
2
+
3
+ /**
4
+ * Understanding shifting in Java. What happens when you shift a number by a negative number.
5
+ *
6
+ * @author rampatra
7
+ * @link https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19
8
+ * @link https://stackoverflow.com/a/10516830/1385441
9
+ * @since 18/11/2018
10
+ */
11
+ public class ShiftByNegativeNumber {
12
+ /**
13
+ * These both are the same as in java if the left operand is int only the low five bits are considered
14
+ * for shifting and if the left operand is a long then the low six bits are considered.
15
+ * Binary representation of -2 is 11.....11110. The last 5 bits are 11110 which is 30.
16
+ *
17
+ * @param args
18
+ */
19
+ public static void main (String [] args ) {
20
+ int v1 = 1 << -2 ;
21
+ int v2 = 1 << 30 ;
22
+ System .out .println (v1 );
23
+ System .out .println (v2 );
24
+ }
25
+ }
Original file line number Diff line number Diff line change
1
+ package com .rampatra .ctci ;
2
+
3
+ /**
4
+ * @author rampatra
5
+ * @since 18/11/2018
6
+ */
7
+ public class IsUnique {
8
+
9
+ private static boolean hasAllUniqueCharacters (String str ) {
10
+ if (str == null || str .length () > 128 ) return false ;
11
+
12
+ boolean [] charSet = new boolean [128 ]; // assuming the string contains only ASCII characters
13
+ for (int i = 0 ; i < str .length (); i ++) {
14
+ int charVal = str .charAt (i );
15
+ if (charSet [charVal ]) {
16
+ return false ;
17
+ }
18
+ charSet [charVal ] = true ;
19
+ }
20
+ return true ;
21
+ }
22
+
23
+ private static boolean hasAllUniqueCharactersWhenStringContainsAllLowercase (String s ) {
24
+ int checker = 0 ;
25
+ for (int i = 0 ; i < s .length (); i ++) {
26
+ int charValue = s .charAt (i ) - 'a' ;
27
+ if ((checker & (1 << charValue )) > 0 ) {
28
+ return false ;
29
+ }
30
+ checker |= (1 << charValue );
31
+ }
32
+ return true ;
33
+ }
34
+
35
+ public static void main (String [] args ) {
36
+ String s = "ram" ;
37
+ System .out .println (hasAllUniqueCharacters (s ));
38
+ s = "rama" ;
39
+ System .out .println (hasAllUniqueCharacters (s ));
40
+ s = "ramA" ;
41
+ System .out .println (hasAllUniqueCharacters (s ));
42
+ System .out .println ("-------" );
43
+ s = "ram" ;
44
+ System .out .println (hasAllUniqueCharactersWhenStringContainsAllLowercase (s ));
45
+ s = "rama" ;
46
+ System .out .println (hasAllUniqueCharactersWhenStringContainsAllLowercase (s ));
47
+ // not working as the input contains different cases
48
+ s = "ramA" ;
49
+ System .out .println (hasAllUniqueCharactersWhenStringContainsAllLowercase (s ));
50
+ }
51
+ }
You can’t perform that action at this time.
0 commit comments