Zoho Java 100 Coding Interview Programs
Compact Interview Guide — Problem · Example · Java snippet · Explanation
Generated for: Zoho Java 100 Coding Interview Programs
Format: Compact — each problem concise to fit one page lines
1. Count frequency of characters
Example: Input: "aabbc" → Output: a=2 b=2 c=1
Map<Character,Integer> map=new LinkedHashMap<>(); for(char c:s.toCharArray())
map.put(c,map.getOrDefault(c,0)+1);
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
2. Compress & decompress (a4b2c3)
Example: Input: "aaaabbccc" → Encoded: a4b2c3, Decoded → aaaabbccc
Compress: iterate, count runs; Decompress: parse digits and append
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
3. Remove consecutive duplicates
Example: Input: "aaabbcca" → Output: "abca"
StringBuilder sb; for i: if(s[i]!=s[i-1]) sb.append(s[i]);
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
4. Check if two strings are anagrams
Example: Input: "listen","silent" → true
Sort char arrays and compare or use freq[26]
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
5. Reverse each word in a sentence
Example: Input: "I love Zoho" → Output: "I evol ohoZ"
Split by space, reverse each word using StringBuilder
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
6. Reverse order of words in sentence
Example: Input: "Zoho is best" → Output: "best is Zoho"
Split, iterate from end, join with spaces
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
7. Toggle case
Example: Input: "AbC" → Output: "aBc"
For each char, if upper → toLowerCase else toUpperCase
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
8. Longest substring without repeating chars
Example: Input: "abcabcbb" → Output length 3 ("abc")
Sliding window with last index map
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
9. First non-repeating character
Example: Input: "aabbcd" → Output: 'c'
Use LinkedHashMap char->count, find first with count 1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
10. Implement your own split()
Example: Input: "a,b,c",',' → [a,b,c]
Iterate chars, build tokens on delimiter
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
11. Implement your own indexOf()
Example: Find substring pos without using indexOf
Naive sliding compare; return index or -1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
12. Find longest palindrome substring (center expand)
Example: Input: "babad" → "bab" or "aba"
Expand around centers for each index
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
13. Rearrange string alternate letters & digits
Example: Input: "a1b2c3" → Output: "a1b2c3" or grouped
Partition into letters and digits then merge
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
14. Rearrange string by character frequency
Example: Input: "aabbbc" → Output: "bbbaac"
Count freq and sort by freq (simple bucket or array)
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
15. Count vowels & consonants
Example: Input: "hello" → vowels=2 consonants=3
Check char ranges
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
16. Remove spaces or special characters
Example: Input: "a b!c" → "abc"
Append only isLetterOrDigit chars
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
17. Check if string is rotation of another
Example: s1 in s2+s2 check using custom indexOf
If lengths equal and s1 is substring of s2+s2
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
18. Replace substring manually (no replace())
Example: Replace occurrences by manual scan and build
Scan and append replacement when match found
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
19. Validate palindrome string ignoring case
Example: Input: "Aba" → true
Two-pointer check with Character.toLowerCase and skip non-alnum
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
20. Convert Roman numerals to integer
Example: Input: "IX" → 9
Map symbols and subtract when smaller before larger
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
21. Add two numbers represented as strings
Example: "1234" + "567" → "1801"
Add from right to left with carry in StringBuilder
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
22. Convert string to integer (custom parseInt)
Example: "-123" → -123
Parse sign and accumulate digits
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
23. Check pangram (all alphabets present)
Example: "The quick brown fox..." → true
Track seen letters boolean[26]
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
24. Count occurrence of each word
Example: "a b a" → a:2 b:1
Split by space, map counts
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
25. Find most frequent character in string
Example: Return character with max frequency
Track counts and max
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
26. Find missing number in array (1–N)
Example: [1,2,4] with n=4 → 3
Use sum formula or XOR
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
27. Find duplicate element
Example: [1,3,4,3,2] → 3
Use XOR or frequency
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
28. Move zeros to end
Example: [0,1,0,3,12] → [1,3,12,0,0]
Two-pointer compact non-zeros then fill zeros
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
29. Find 2nd largest without sorting
Example: [5,1,9,2] → 5
Track first and second max
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
30. Sort 0s,1s,2s (Dutch Flag)
Example: [2,0,2,1,1,0] → [0,0,1,1,2,2]
Low-mid-high pointers
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
31. Reverse an array
Example: [1,2,3] → [3,2,1]
Swap two pointers
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
32. Rotate array by K positions
Example: [1,2,3,4,5],k=2 → [4,5,1,2,3]
Reverse parts or use temp array
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
33. Leaders in array
Example: [16,17,4,3,5,2] → [17,5,2]
Traverse from right tracking max
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
34. Count pairs with given sum
Example: [1,5,7,-1], sum=6 → pairs (1,5)(7,-1)
Use hashmap of counts
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
35. Merge two sorted arrays
Example: Merge into single sorted output
Two-pointer merge
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
36. Intersection of two arrays
Example: Elements present in both
Use frequency map for smaller array
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
37. Union of two arrays
Example: Unique elements from both
Use boolean seen or set
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
38. Rearrange even & odd numbers
Example: Even numbers first preserving order
Collect evens then odds
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
39. Maximum consecutive 1s
Example: [1,1,0,1,1,1] → 3
Scan and count streaks
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
40. Find equilibrium index
Example: Index where left sum == right sum
Total sum and running left sum
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
41. Separate positive & negative numbers
Example: Partition array keeping relative order
Use stable partition: extra array or two lists
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
42. Kadane's algorithm (max subarray sum)
Example: [-2,1,-3,4,-1,2,1,-5,4] → 6
Track currentSum and maxSum
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
43. Find common elements in three arrays
Example: Triple intersection
Use maps or three pointers if sorted
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
44. Check if array is sorted & rotated
Example: [3,4,5,1,2] → true
Count drops should be <=1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
45. Print all subarrays
Example: Generate all subarrays O(n^2)
Two loops for start and end
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
46. Check prime number
Example: isPrime(n) by trial division up to sqrt(n)
Return false for n<2
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
47. Print prime numbers till N
Example: Sieve or trial division
Loop and isPrime
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
48. Armstrong number
Example: 153 → true
Sum of digits^count equals number
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
49. Strong number
Example: 145 → true (sum of factorials of digits)
Compute factorials and sum
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
50. Perfect number
Example: 28 → true (sum of proper divisors equals number)
Loop to sqrt and add divisors
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
51. Palindrome number
Example: 121 → true
Reverse digits and compare
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
52. Reverse digits of a number
Example: 123 → 321
Accumulate reversed
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
53. Factorial (loop & recursion)
Example: 5 → 120
Iterative multiply or recursive
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
54. Fibonacci series (loop & recursion)
Example: 0 1 1 2 3 ...
Iterative loop or recursion
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
55. Sum of digits until single digit
Example: 9875 → 2 (digital root)
Repeat sum of digits or use formula (n-1)%9+1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
56. LCM & GCD of two numbers
Example: Use Euclid gcd then lcm = a/gcd*b
Implement gcd iteratively
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
57. Swap numbers without temp variable
Example: a=a+b; b=a-b; a=a-b or XOR method
Careful about overflow
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
58. Add two numbers without + operator
Example: Use bitwise add loop with carry
While b!=0: carry=a&b; a^=b; b=carry<<1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
59. Decimal to Binary conversion
Example: 26 → 11010
Divide by 2 collect remainders
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
60. Binary to Decimal conversion
Example: 1101 → 13
Accumulate bits * powers of 2
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
61. Decimal to Hexadecimal
Example: 255 → FF
Divide by 16 map remainders
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
62. Hexadecimal to Binary
Example: "1A" → 00011010
Map hex digit to 4-bit binary
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
63. Find power of a number (loop)
Example: 2^8 → 256
Multiply in loop or fast exponentiation
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
64. Count digits in a number
Example: n>0 count++ while n/=10
Edge case n=0 count=1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
65. Check if number is perfect square
Example: Use sqrt and check integer or binary search
Avoid floating precision issues
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
66. Print matrix diagonals
Example: Print primary and secondary diagonals
Loop i=0..n-1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
67. Sum of diagonal elements
Example: Sum elements at [i][i] and [i][n-1-i]
Avoid double counting center for odd n
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
68. Sum of boundary elements
Example: Sum first and last row and first and last col
Loop boundaries carefully
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
69. Transpose of a matrix
Example: Swap a[i][j] with a[j][i] for j>i
In-place for square matrices
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
70. Rotate matrix 90° clockwise
Example: Transpose then reverse each row
Two-step transform
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
71. Spiral matrix traversal
Example: Print in spiral order
Maintain top,bottom,left,right bounds and iterate
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
72. Add two matrices
Example: Element-wise sum
Nested loops
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
73. Multiply two matrices
Example: Standard triple nested loop
Careful with dimensions
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
74. Find row with max sum
Example: Compute sum of each row and track max
Return index or sum
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
75. Search element in 2D sorted matrix
Example: Treat matrix as flattened binary search or row-wise elimination
Use binary search on rows then columns
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
76. Count currency notes for given amount
Example: 2456 → 2000:1,200:2,50:1,5:1,1:1
Greedy divide by denominations
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
77. Print number triangle pattern
Example: 1; 1 2; 1 2 3 ...
Nested loops
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
78. Print diamond/star pyramid pattern
Example: Construct symmetric pyramid using spaces and stars
Loop heights up and down
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
79. Pascal's triangle
Example: See earlier code using combinatorics
Compute next row from previous
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
80. Hollow square / inverted triangle pattern
Example: Print stars with spaces inside
Conditional printing in loops
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
81. Validate IP address
Example: "192.168.1.1" → true
Split by '.' and check 0-255 numeric and no leading zeros
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
82. Generate random password
Example: Mix letters digits special chars of given length
Use Random and char pools
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
83. Find day of week from date
Example: Given date compute using Zeller's congruence or LocalDate
Use algorithm or Java date API if allowed
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
84. Print all dates between two dates
Example: Iterate date by plusDays from start to end
Use calendar arithmetic
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
85. Check Armstrong numbers in range
Example: List all Armstrong numbers up to N
Use digit power sum check
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
86. Find largest & smallest digits in number
Example: Parse digits and track min/max
Edge case negative numbers
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
87. Rearrange numbers ascending/descending manually
Example: Implement simple selection or insertion sort
Use O(n^2) sorts for small arrays
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
88. Convert 24hr to 12hr format
Example: 13:45 → 1:45 PM
Handle midnight and noon
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
89. Find numbers divisible by given divisor in range
Example: Loop and check modulus
Collect or print matches
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
90. Check leap year
Example: Use rule: divisible by 4, not by 100 unless by 400
Return boolean
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
91. Sum series 1 + 11 + 111 + ... N terms
Example: Compute iteratively using accumulation
term = term*10 + 1
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
92. Count number of words in sentence
Example: Split by whitespace and count non-empty tokens
Trim and split regex
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
93. Remove duplicates from array
Example: Preserve order using boolean seen or LinkedHashSet
Use seen set
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
94. Reverse elements in groups of size K
Example: [1,2,3,4,5], k=2 → [2,1,4,3,5]
Reverse each block
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
95. Count palindromic substrings
Example: Expand around centers for each index
Count all palindromic spans
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
96. Replace multiple spaces with single
Example: Use manual scan to collapse consecutive spaces
Append char when not consecutive space
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
97. Custom sorting of strings by length
Example: "apple","a","banana" → a,apple,banana
Simple comparison by length then lexicographically
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
98. Print cross pattern (X shape)
Example: Print '*' at positions i and n-1-i
Nested loops with condition
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
99. Sort words alphabetically
Example: Split and custom sort (simple bubble/selection)
Compare strings lexicographically
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.
100. Print Fibonacci triangle
Example: Construct rows with Fibonacci numbers
Generate sequence and print in triangular form
Explanation: See concise approach — implement using basic loops/arrays/maps depending on problem.