Description

Book Synopsis
Expand your knowledge of Java with this entertaining learning guide, which features 100+ exercises and programming challenges. Java Challenges will prepare you for your next exam or job interview, and covers many practical topics, such as strings, arrays, data structures, recursion, and date and time. The APIs and other material included in this book are Java 17 compatible. Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by multiple exercises of varying degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area.Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors. Three appendices round out the book: one covering JShell, which is often helpful for trying out the code snippets and examples in the book, followed by an in

Table of Contents
1 Introduction ................................................ 11.1 Structure of the chapters ...................................... 11.2 Basic structure of the Eclipse project ............................ 31.3 Basic framework for unit tests .................................. 41.4 Note on programming style .................................... 51.5 Trying out the examples and solutions........................... 9I Fundamentals 112 Mathematical problems ...................................... 132.1 Introduction.................................................. 132.1.1 Roman numerals....................................... 172.1.2 Number Games ........................................ 182.2 Exercises ................................................... 212.2.1 Exercise 1: Basic Arithmetic (★✩✩✩✩) ................... 212.2.2 Exercise 2: Number as text (★★✩✩✩) .................... 222.2.3 Exercise 3: Perfect numbers (★★✩✩✩) ................... 222.2.4 Exercise 4: Prime Numbers (★★✩✩✩) ................... 232.2.5 Exercise 5: Prime number pairs (★★✩✩✩) ................ 232.2.6 Exercise 6: Checksum (★★✩✩✩) ........................ 232.2.7 Exercise 7: Roman numbers (★★★★✩) .................. 242.2.8 Exercise 8: Combinatorics (★★✩✩✩) .................... 242.2.9 Exercise 9: Armstrong Numbers (★★✩✩✩) ............... 252.2.10 Exercise 10: Max Change Calculator (★★★★✩) ........... 252.2.11 Exercise 11: Related Numbers (★★✩✩✩)................. 262.2.12 Exercise 12: Prime factorization (★★★✩✩)................ 262.3 Solutions .................................................... 272.3.1 Solution 1: Basic Arithmetic (★✩✩✩✩) ................... 272.3.2 Solution 2: Number as text (★★✩✩✩) .................... 302.3.3 Solution 3: Perfect numbers (★★✩✩✩) ................... 322.3.4 Solution 4: Prime Numbers (★★✩✩✩) .................... 342.3.5 Solution 5: Prime number pairs (★★✩✩✩) ................ 36vi Inhaltsverzeichnis2.3.6 Solution 6: Checksum (★★✩✩✩) ........................ 402.3.7 Solution 7: Roman numbers (★★★★✩) ................... 412.3.8 Solution 8: Combinatorics (★★✩✩✩) ..................... 462.3.9 Solution 9: Armstrong Numbers (★★✩✩✩) ................ 492.3.10 Solution 10: Max Change Calculator (★★★★✩) ............ 522.3.11 Solution 11: Related Numbers (★★✩✩✩) ................. 542.3.12 Solution 12: Prime factorization (★★★✩✩) ................ 553 Recursion .................................................. 593.1 Introduction.................................................. 593.1.1 Mathematical examples ................................. 593.1.2 Algorithmic examples ................................... 633.1.3 Steps when multiplying the digits of a number.............. 673.1.4 Typical problems ....................................... 683.2 Exercises ................................................... 713.2.1 Exercise 1: Fibonacci (★★✩✩✩) ......................... 713.2.2 Exercise 2: Process digits (★★✩✩✩) ..................... 713.2.3 Exercise 3: GCD (★★✩✩✩) ............................. 723.2.4 Exercise 4: Reverse String (★★✩✩✩) .................... 733.2.5 Exercise 5: Array Sum (★★✩✩✩) ........................ 733.2.6 Exercise 6: Array Min (★★✩✩✩) ......................... 733.2.7 Exercise 7: Conversions (★★✩✩✩) ...................... 743.2.8 Exercise 8: Exponential Function (★★✩✩✩)............... 753.2.9 Exercise 9: Pascal’s triangle (★★✩✩✩) ................... 763.2.10 Exercise 10: Number palindromes (★★★★✩).............. 763.2.11 Exercise 11: Permutations (★★★✩✩) .................... 773.2.12 Exercise 12: Count Substrings (★★✩✩✩) ................. 773.2.13 Exercise 13: Ruler (★★✩✩✩) ........................... 783.3 Solutions .................................................... 793.3.1 Solution 1: Fibonacci (★★✩✩✩) ......................... 793.3.2 Solution 2: Process digits (★★✩✩✩) ..................... 813.3.3 Solution 3: GCD (★★✩✩✩) ............................. 823.3.4 Solution 4: Reverse String (★★✩✩✩) .................... 853.3.5 Solution 5: Array Sum (★★✩✩✩) ........................ 863.3.6 Solution 6: Array Min (★★✩✩✩) ......................... 873.3.7 Solution 7: Conversions (★★✩✩✩)....................... 883.3.8 Solution 8: Exponential Function (★★✩✩✩) ............... 923.3.9 Solution 9: Pascal’s triangle (★★✩✩✩) ................... 953.3.10 Solution 10: Number palindromes (★★★★✩) .............. 983.3.11 Solution 11: Permutations (★★★✩✩) ..................... 1013.3.12 Solution 12: Count Substrings (★★✩✩✩) ................. 1043.3.13 Solution 13: Ruler (★★✩✩✩) ............................ 108Inhaltsverzeichnis vii4 Strings ..................................................... 1114.1 Introduction.................................................. 1114.1.1 The class String ..................................... 1124.1.2 The classes StringBuffer and StringBuilder ........ 1134.1.3 Class Character ..................................... 1144.1.4 Examples related to Character and String ............. 1154.2 Exercises ................................................... 1184.2.1 Exercise 1: Number conversions (★★✩✩✩) ............... 1184.2.2 Exercise 2: Joiner (★✩✩✩✩) ............................ 1184.2.3 Exercise 3: Reverse String (★★✩✩✩) .................... 1194.2.4 Exercise 4: Palindrome (★★★✩✩) ....................... 1194.2.5 Exercise 5: No Duplicate Chars (★★★✩✩) ................ 1204.2.6 Exercise 6: Remove Duplicate Letters (★★★✩✩) .......... 1204.2.7 Exercise 7: Capitalize (★★✩✩✩) ........................ 1214.2.8 Exercise 8: Rotation (★★✩✩✩) .......................... 1224.2.9 Exercise 9: Well formed braces (★★✩✩✩) ................ 1224.2.10 Exercise 10: Anagram (★★✩✩✩) ........................ 1234.2.11 Exercise 11: Morse Code (★★✩✩✩) ..................... 1234.2.12 Exercise 12: Pattern Checker (★★★✩✩) .................. 1244.2.13 Exercise 13: Tennis score (★★★✩✩) ..................... 1244.2.14 Exercise 14: Version numbers (★★✩✩✩) ................. 1254.2.15 Exercise 15: Conversion strToLong (★★✩✩✩) ........... 1254.2.16 Exercise 16: Print Tower (★★★✩✩) ...................... 1264.3 Solutions .................................................... 1274.3.1 Solution 1: Number conversions (★★✩✩✩) ............... 1274.3.2 Solution 2: Joiner (★✩✩✩✩) ............................ 1304.3.3 Solution 3: Reverse String (★★✩✩✩) .................... 1324.3.4 Solution 4: Palindrome (★★★✩✩)........................ 1344.3.5 Solution 5: No Duplicate Chars (★★★✩✩) ................ 1374.3.6 Solution 6: Remove Duplicate Letters (★★★✩✩) ........... 1384.3.7 Solution 7: Capitalize (★★✩✩✩) ......................... 1404.3.8 Solution 8: Rotation (★★✩✩✩) .......................... 1444.3.9 Solution 9: Well formed braces (★★✩✩✩) ................ 1454.3.10 Solution 10: Anagram (★★✩✩✩) ........................ 1474.3.11 Solution 11: Morse Code (★★✩✩✩)...................... 1484.3.12 Solution 12: Pattern Checker (★★★✩✩) .................. 1504.3.13 Solution 13: Tennis score (★★★✩✩) ..................... 1524.3.14 Solution 14: Version numbers (★★✩✩✩).................. 1564.3.15 Solution 15: Conversion strToLong (★★✩✩✩) ........... 1584.3.16 Solution 16: Print Tower (★★★✩✩)....................... 161viii Inhaltsverzeichnis5 Arrays ...................................................... 1655.1 Introduction.................................................. 1655.1.1 One-dimensional arrays ................................. 1665.1.2 Multidimensional arrays ................................. 1765.1.3 Typical errors .......................................... 1835.2 Exercises ................................................... 1845.2.1 Exercise 1: Even before odd numbers (★★✩✩✩) .......... 1845.2.2 Exercise 2: Flip (★★✩✩✩) .............................. 1845.2.3 Exercise 3: Palindrome (★★✩✩✩) ....................... 1845.2.4 Exercise 4: Inplace Rotate (★★★✩✩) .................... 1855.2.5 Exercise 5: Jewels Board Init (★★★✩✩) .................. 1855.2.6 Exercise 6: Jewels Board Erase Diamonds (★★★★✩) ...... 1875.2.7 Exercise 7: Spiral Traversal (★★★★✩) .................... 1885.2.8 Exercise 8: Add One to Array As Number (★★✩✩✩) ....... 1885.2.9 Exercise 9: Sudoku Checker (★★★✩✩)................... 1895.2.10 Exercise 10: Flood-Fill (★★✩✩✩) ........................ 1905.2.11 Exercise 11: Array Merge (★★✩✩✩) ..................... 1915.2.12 Exercise 12: Array Min and Max (★★✩✩✩) ............... 1915.2.13 Exercise 13: Array Split (★★★✩✩) ....................... 1925.2.14 Exercise 14: Minesweeper Board (★★★✩✩) .............. 1935.3 Solutions .................................................... 1955.3.1 Solution 1: Even before odd numbers (★★✩✩✩) ........... 1955.3.2 Solution 2: Flip (★★✩✩✩) .............................. 1995.3.3 Solution 3: Palindrome (★★✩✩✩)........................ 2035.3.4 Solution 4: Inplace Rotate (★★★✩✩) ..................... 2055.3.5 Solution 5: Jewels Board Init (★★★✩✩) .................. 2095.3.6 Solution 6: Jewels Board Erase Diamonds (★★★★✩) ...... 2165.3.7 Solution 7: Spiral Traversal (★★★★✩) .................... 2255.3.8 Solution 8: Add One to Array As Number (★★✩✩✩) ........ 2305.3.9 Solution 9: Sudoku Checker (★★★✩✩) ................... 2325.3.10 Solution 10: Flood-Fill (★★✩✩✩) ........................ 2385.3.11 Solution 11: Array Merge (★★✩✩✩)...................... 2425.3.12 Solution 12: Array Min and Max (★★✩✩✩) ................ 2465.3.13 Solution 13: Array Split (★★★✩✩) ....................... 2495.3.14 Solution 14: Minesweeper Board (★★★✩✩) ............... 254Inhaltsverzeichnis ix6 Date processing ............................................ 2616.1 Introduction.................................................. 2616.1.1 The enumerations DayOfWeek and Month ................ 2616.1.2 The classes LocalDate, LocalTime and LocalDateTime 2626.1.3 The class ZonedDateTime ............................. 2646.1.4 The class ZoneId ..................................... 2656.1.5 Class Duration....................................... 2666.1.6 The class Period ..................................... 2676.1.7 Date arithmetic ........................................ 2686.1.8 Formatting and parsing ................................. 2706.2 Exercises ................................................... 2726.2.1 Exercise 1: Leap Years (★✩✩✩✩) ....................... 2726.2.2 Exercise 2: Basic knowledge Date-API (★★✩✩✩).......... 2726.2.3 Exercise 3: Length of Month (★★✩✩✩) ................... 2736.2.4 Exercise 4: Time Zones (★★✩✩✩) ....................... 2736.2.5 Exercise 5: Time Zone Calculation (★★✩✩✩) ............. 2736.2.6 Exercise 6: Calculations with LocalDate ................. 2746.2.7 Exercise 7: Calendar output (★★★✩✩) ................... 2746.2.8 Exercise 8: Weekdays (★✩✩✩✩) ........................ 2756.2.9 Exercise 9: Sundays and leap years (★★✩✩✩) ............ 2766.2.10 Exercise 10: TemporalAdjuster (★★★✩✩)................. 2766.2.11 Exercise 11: NthWeekdayAdjuster (★★★✩✩) ............. 2776.2.12 Exercise 12: Payday-TemporalAdjuster (★★★✩✩) ......... 2776.2.13 Exercise 13: Formatting and Parsing (★★✩✩✩) ........... 2786.2.14 Exercise 14: Fault Tolerant Parsing (★★✩✩✩) ............. 2786.3 Solutions .................................................... 2796.3.1 Solution 1: Leap Years (★✩✩✩✩) ........................ 2796.3.2 Solution 2: Basic knowledge Date-API (★★✩✩✩) .......... 2806.3.3 Solution 3: Length of Month (★★✩✩✩) ................... 2816.3.4 Solution 4: Time Zones (★★✩✩✩) ....................... 2826.3.5 Solution 5: Time Zone Calculation (★★✩✩✩).............. 2836.3.6 Solution 6: Calculations with LocalDate ................. 2846.3.7 Solution 7: Calendar output (★★★✩✩) ................... 2866.3.8 Solution 8: Weekdays (★✩✩✩✩) ........................ 2896.3.9 Solution 9: Sundays and leap years (★★✩✩✩) ............ 2926.3.10 Solution 10: TemporalAdjuster (★★★✩✩) ................. 2946.3.11 Solution 11: NthWeekdayAdjuster (★★★✩✩) .............. 2956.3.12 Solution 12: Payday-TemporalAdjuster (★★★✩✩) .......... 2976.3.13 Solution 13: Formatting and Parsing (★★✩✩✩) ............ 3016.3.14 Solution 14: Fault Tolerant Parsing (★★✩✩✩) ............. 302x Inhaltsverzeichnis7 Basic data structures: lists, sets, and maps ................... 3057.1 Introduction.................................................. 3057.1.1 The interface Collection.............................. 3057.1.2 Lists and the interface List ......................... 3067.1.3 Sets and the interface Set .............................. 3077.1.4 Key-value mappings and the interface map ................ 3077.1.5 The stack as LIFO data structure ......................... 3087.1.6 The queue as FIFO data structure........................ 3097.2 Exercises ................................................... 3117.2.1 Exercise 1: Set operations (★★✩✩✩) .................... 3117.2.2 Exercise 2: List Reverse (★★✩✩✩) ...................... 3117.2.3 Exercise 3: Remove Duplicates (★★✩✩✩) ................ 3127.2.4 Exercise 4: Maximum Profit (★★★✩✩) ................... 3127.2.5 Exercise 5: Longest sequence (★★★✩✩) ................. 3137.2.6 Exercise 6: Own stack (★★✩✩✩) ........................ 3137.2.7 Exercise 7: Well-formed braces (★★✩✩✩) ................ 3137.2.8 Exercise 8: Check Magic Triangle (★★★✩✩) .............. 3147.2.9 Exercise 9: Pascal’s triangle (★★★✩✩) ................... 3147.2.10 Exercise 10: Most Frequent Elements (★★✩✩✩) .......... 3157.2.11 Exercise 11: Addition of digits (★★★✩✩) ................. 3157.2.12 Exercise 12: Compound Key (★★✩✩✩) .................. 3167.2.13 Exercise 13: List Merge (★★✩✩✩) ....................... 3167.2.14 Exercise 14: Excel Magic Select (★★✩✩✩) ............... 3177.3 Solutions .................................................... 3187.3.1 Solution 1: Set operations (★★✩✩✩) ..................... 3187.3.2 Solution 2: List Reverse (★★✩✩✩)....................... 3237.3.3 Solution 3: Remove Duplicates (★★✩✩✩) ................ 3267.3.4 Solution 4: Maximum Profit (★★★✩✩) .................... 3277.3.5 Solution 5: Longest sequence (★★★✩✩) ................. 3307.3.6 Solution 6: Own stack (★★✩✩✩) ........................ 3337.3.7 Solution 7: Well-formed braces (★★✩✩✩) ................ 3357.3.8 Solution 8: Check Magic Triangle (★★★✩✩)............... 3407.3.9 Solution 9: Pascal’s triangle (★★★✩✩) ................... 3447.3.10 Solution 10: Most Frequent Elements (★★✩✩✩) ........... 3467.3.11 Solution 11: Addition of digits (★★★✩✩) .................. 3487.3.12 Solution 12: Compound Key (★★✩✩✩) ................... 3527.3.13 Solution 13: List Merge (★★✩✩✩) ....................... 3547.3.14 Solution 14: Excel Magic Select (★★✩✩✩)................ 356Inhaltsverzeichnis xiII More advanced and tricky topics 3618 Advanced recursion ......................................... 3638.1 Memoization ................................................. 3638.1.1 Memoization for Fibonacci numbers ...................... 3638.1.2 Memoization for Pascal’s triangle ......................... 3658.2 Backtracking ................................................. 3688.2.1 n-queens problem ...................................... 3688.3 Exercises ................................................... 3728.3.1 Exercise 1: Towers of Hanoi (★★★✩✩) ................... 3728.3.2 Exercise 2: Edit Distance (★★★★✩) ..................... 3738.3.3 Exercise 3: Longest Common Subsequence (★★★✩✩) ..... 3738.3.4 Exercise 4: Way out of labyrinth (★★★✩✩) ................ 3748.3.5 Exercise 5: Sudoku Solver (★★★★✩) .................... 3758.3.6 Exercise 6: Math Operator Checker (★★★★✩) ............ 3768.3.7 Exercise 7: Water Bucket Problem (★★★✩✩) ............. 3778.3.8 Exercise 8: All palindrome substrings (★★★★✩) ........... 3788.3.9 Exercise 9: n-queens problem (★★★✩✩) ................. 3788.4 Solutions .................................................... 3798.4.1 Solution 1: Towers of Hanoi (★★★✩✩) ................... 3798.4.2 Solution 2: Edit Distance (★★★★✩) ...................... 3858.4.3 Solution 3: Longest Common Subsequence (★★★✩✩) ..... 3918.4.4 Solution 4: Way out of labyrinth (★★★✩✩) ................ 3948.4.5 Solution 5: Sudoku Solver (★★★★✩) ..................... 3978.4.6 Solution 6: Math Operator Checker (★★★★✩) ............. 4058.4.7 Solution 7: Water Bucket Problem (★★★✩✩) .............. 4108.4.8 Solution 8: All palindrome substrings (★★★★✩) ........... 4138.4.9 Solution 9: n-queens problem (★★★✩✩).................. 4179 Binary trees ................................................ 4259.1 Introduction.................................................. 4259.1.1 Structure, terminology and examples of use ............... 4259.1.2 Binary trees ........................................... 4269.1.3 Binary trees with order: binary search trees ............... 4279.1.4 Traversals ............................................. 4299.1.5 Balanced trees and other properties ...................... 4329.1.6 Trees for the examples and exercises ..................... 4349.2 Exercises ................................................... 4369.2.1 Exercise 1: Tree Traversal (★★✩✩✩) ..................... 4369.2.2 Exercise 2: In-, Pre- und Postorder iterative (★★★★✩)...... 4369.2.3 Exercise 3: Tree Height (★★✩✩✩) ....................... 4369.2.4 Exercise 4: Lowest Common Ancestor (★★★✩✩) .......... 4379.2.5 Exercise 5: Breadth-First (★★★✩✩) ...................... 437xii Inhaltsverzeichnis9.2.6 Exercise 6: Level Sum (★★★★✩) ........................ 4389.2.7 Exercise 7: Tree Rotate (★★★✩✩) ....................... 4389.2.8 Exercise 8: Reconstruction (★★★✩✩) .................... 4399.2.9 Exercise 9: Math Evaluation (★★✩✩✩) ................... 4399.2.10 Exercsie 10: Symmetry (★★✩✩✩) ....................... 4409.2.11 Exercise 11: Check Binary Search Tree (★★✩✩✩) ......... 4419.2.12 Exercise 12: Completeness (★★★★★) ................... 4419.2.13 Exercise 13: Tree Printer (★★★★★) ...................... 4439.3 Solutions .................................................... 4469.3.1 Solution 1: Tree Traversal (★★✩✩✩) ..................... 4469.3.2 Solution 2: In-, Pre- und Postorder iterative (★★★★✩) ...... 4489.3.3 Solution 3: Tree Height (★★✩✩✩) ....................... 4569.3.4 Solution 4: Lowest Common Ancestor (★★★✩✩) .......... 4579.3.5 Solution 5: Breadth-First (★★★✩✩) ...................... 4619.3.6 Solution 6: Level Sum (★★★★✩) ........................ 4639.3.7 Solution 7: Tree Rotate (★★★✩✩) ....................... 4679.3.8 Solution 8: Reconstruction (★★★✩✩) .................... 4709.3.9 Solution 9: Math Evaluation (★★✩✩✩) ................... 4769.3.10 Solution 10: Symmetry (★★✩✩✩) ....................... 4779.3.11 Solution 11: Check Binary Search Tree (★★✩✩✩) ......... 4819.3.12 Solution 12: Completeness (★★★★★) .................... 4839.3.13 Solution 13: Tree Printer (★★★★★) ...................... 49310 Searching and sorting ....................................... 50310.1 Introduction Search ........................................... 50310.1.1 Searching in Collections and Arrays ...................... 50310.1.2 Binary search with binarySearch() .................... 50510.2 Introduction Sort ............................................. 50610.2.1 Insertion Sort .......................................... 50610.2.2 Selection Sort ......................................... 50810.2.3 Merge Sort ............................................ 51010.2.4 Quick Sort ............................................ 51110.2.5 Bucket Sort ........................................... 51410.2.6 Final Thoughts ........................................ 51510.3 Exercises ................................................... 51610.3.1 Exercise 1: Contains All (★★✩✩✩)....................... 51610.3.2 Exercise 2: Partitioning (★★★✩✩) ....................... 51610.3.3 Exercise 3: Binary Search (★★✩✩✩)..................... 51710.3.4 Exercise 4: Insertion Sort (★★✩✩✩) ..................... 51710.3.5 Exercise 5: Selection Sort (★★✩✩✩) ..................... 51810.3.6 Exercise 6: Quick Sort (★★★✩✩) ........................ 51810.3.7 Exercise 7: Bucket Sort (★★✩✩✩) ....................... 51910.3.8 Exercise 8: Search in rotated data (★★★★✩).............. 519Inhaltsverzeichnis xiii10.4 Solutions .................................................... 52110.4.1 Solution 1: Contains All (★★✩✩✩) ....................... 52110.4.2 Solution 2: Partitioning (★★★✩✩) ........................ 52210.4.3 Solution 3: Binary Search (★★✩✩✩) ..................... 52410.4.4 Solution 4: Insertion Sort (★★✩✩✩)...................... 52810.4.5 Solution 5: Selection Sort (★★✩✩✩) ..................... 52910.4.6 Solution 6: Quick Sort (★★★✩✩) ........................ 53010.4.7 Solution 7: Bucket Sort (★★✩✩✩) ....................... 53210.4.8 Solution 8: Search in rotated data (★★★★✩) .............. 53411 Conclusion and supplementary literature ..................... 54111.1 Conclusion .................................................. 54111.1.1 Lessons learned per chapter ............................ 54111.1.2 Noteworthy ............................................ 54311.2 Puzzles ..................................................... 54411.2.1 Gold bags – detect the fake ............................. 54511.2.2 Horse race – determine fastest three horses ............... 54611.3 Supplementary literature ...................................... 549III Appendix 553A Quick start JShell ........................................... 555A.1 Java + REPL => jshell ...................................... 555B Short introduction JUnit 5 ................................... 561B.1 Writing and running tests ...................................... 561B.1.1 Example: A first unit test ................................ 561B.1.2 Fundamentals of writing and running tests................. 562B.1.3 Handling expected exceptions with assertThrows() ...... 565B.2 Parameterized tests with JUnit 5 ............................... 566C Quick start O-notation ....................................... 569C.1 Estimations with the O-notation ................................ 569C.1.1 Complexity classes ..................................... 570C.1.2 Complexity and program running time .................... 572

Java Challenges

    Product form

    £49.49

    Includes FREE delivery

    RRP £54.99 – you save £5.50 (10%)

    Order before 4pm today for delivery by Fri 19 Jun 2026.

    A Paperback by Michael Inden

    1 in stock


      View other formats and editions of Java Challenges by Michael Inden

      Publisher: APress
      Publication Date: 1/4/2021 12:12:00 AM
      ISBN13: 9781484273944, 978-1484273944
      ISBN10: 148427394X

      Description

      Book Synopsis
      Expand your knowledge of Java with this entertaining learning guide, which features 100+ exercises and programming challenges. Java Challenges will prepare you for your next exam or job interview, and covers many practical topics, such as strings, arrays, data structures, recursion, and date and time. The APIs and other material included in this book are Java 17 compatible. Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by multiple exercises of varying degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area.Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors. Three appendices round out the book: one covering JShell, which is often helpful for trying out the code snippets and examples in the book, followed by an in

      Table of Contents
      1 Introduction ................................................ 11.1 Structure of the chapters ...................................... 11.2 Basic structure of the Eclipse project ............................ 31.3 Basic framework for unit tests .................................. 41.4 Note on programming style .................................... 51.5 Trying out the examples and solutions........................... 9I Fundamentals 112 Mathematical problems ...................................... 132.1 Introduction.................................................. 132.1.1 Roman numerals....................................... 172.1.2 Number Games ........................................ 182.2 Exercises ................................................... 212.2.1 Exercise 1: Basic Arithmetic (★✩✩✩✩) ................... 212.2.2 Exercise 2: Number as text (★★✩✩✩) .................... 222.2.3 Exercise 3: Perfect numbers (★★✩✩✩) ................... 222.2.4 Exercise 4: Prime Numbers (★★✩✩✩) ................... 232.2.5 Exercise 5: Prime number pairs (★★✩✩✩) ................ 232.2.6 Exercise 6: Checksum (★★✩✩✩) ........................ 232.2.7 Exercise 7: Roman numbers (★★★★✩) .................. 242.2.8 Exercise 8: Combinatorics (★★✩✩✩) .................... 242.2.9 Exercise 9: Armstrong Numbers (★★✩✩✩) ............... 252.2.10 Exercise 10: Max Change Calculator (★★★★✩) ........... 252.2.11 Exercise 11: Related Numbers (★★✩✩✩)................. 262.2.12 Exercise 12: Prime factorization (★★★✩✩)................ 262.3 Solutions .................................................... 272.3.1 Solution 1: Basic Arithmetic (★✩✩✩✩) ................... 272.3.2 Solution 2: Number as text (★★✩✩✩) .................... 302.3.3 Solution 3: Perfect numbers (★★✩✩✩) ................... 322.3.4 Solution 4: Prime Numbers (★★✩✩✩) .................... 342.3.5 Solution 5: Prime number pairs (★★✩✩✩) ................ 36vi Inhaltsverzeichnis2.3.6 Solution 6: Checksum (★★✩✩✩) ........................ 402.3.7 Solution 7: Roman numbers (★★★★✩) ................... 412.3.8 Solution 8: Combinatorics (★★✩✩✩) ..................... 462.3.9 Solution 9: Armstrong Numbers (★★✩✩✩) ................ 492.3.10 Solution 10: Max Change Calculator (★★★★✩) ............ 522.3.11 Solution 11: Related Numbers (★★✩✩✩) ................. 542.3.12 Solution 12: Prime factorization (★★★✩✩) ................ 553 Recursion .................................................. 593.1 Introduction.................................................. 593.1.1 Mathematical examples ................................. 593.1.2 Algorithmic examples ................................... 633.1.3 Steps when multiplying the digits of a number.............. 673.1.4 Typical problems ....................................... 683.2 Exercises ................................................... 713.2.1 Exercise 1: Fibonacci (★★✩✩✩) ......................... 713.2.2 Exercise 2: Process digits (★★✩✩✩) ..................... 713.2.3 Exercise 3: GCD (★★✩✩✩) ............................. 723.2.4 Exercise 4: Reverse String (★★✩✩✩) .................... 733.2.5 Exercise 5: Array Sum (★★✩✩✩) ........................ 733.2.6 Exercise 6: Array Min (★★✩✩✩) ......................... 733.2.7 Exercise 7: Conversions (★★✩✩✩) ...................... 743.2.8 Exercise 8: Exponential Function (★★✩✩✩)............... 753.2.9 Exercise 9: Pascal’s triangle (★★✩✩✩) ................... 763.2.10 Exercise 10: Number palindromes (★★★★✩).............. 763.2.11 Exercise 11: Permutations (★★★✩✩) .................... 773.2.12 Exercise 12: Count Substrings (★★✩✩✩) ................. 773.2.13 Exercise 13: Ruler (★★✩✩✩) ........................... 783.3 Solutions .................................................... 793.3.1 Solution 1: Fibonacci (★★✩✩✩) ......................... 793.3.2 Solution 2: Process digits (★★✩✩✩) ..................... 813.3.3 Solution 3: GCD (★★✩✩✩) ............................. 823.3.4 Solution 4: Reverse String (★★✩✩✩) .................... 853.3.5 Solution 5: Array Sum (★★✩✩✩) ........................ 863.3.6 Solution 6: Array Min (★★✩✩✩) ......................... 873.3.7 Solution 7: Conversions (★★✩✩✩)....................... 883.3.8 Solution 8: Exponential Function (★★✩✩✩) ............... 923.3.9 Solution 9: Pascal’s triangle (★★✩✩✩) ................... 953.3.10 Solution 10: Number palindromes (★★★★✩) .............. 983.3.11 Solution 11: Permutations (★★★✩✩) ..................... 1013.3.12 Solution 12: Count Substrings (★★✩✩✩) ................. 1043.3.13 Solution 13: Ruler (★★✩✩✩) ............................ 108Inhaltsverzeichnis vii4 Strings ..................................................... 1114.1 Introduction.................................................. 1114.1.1 The class String ..................................... 1124.1.2 The classes StringBuffer and StringBuilder ........ 1134.1.3 Class Character ..................................... 1144.1.4 Examples related to Character and String ............. 1154.2 Exercises ................................................... 1184.2.1 Exercise 1: Number conversions (★★✩✩✩) ............... 1184.2.2 Exercise 2: Joiner (★✩✩✩✩) ............................ 1184.2.3 Exercise 3: Reverse String (★★✩✩✩) .................... 1194.2.4 Exercise 4: Palindrome (★★★✩✩) ....................... 1194.2.5 Exercise 5: No Duplicate Chars (★★★✩✩) ................ 1204.2.6 Exercise 6: Remove Duplicate Letters (★★★✩✩) .......... 1204.2.7 Exercise 7: Capitalize (★★✩✩✩) ........................ 1214.2.8 Exercise 8: Rotation (★★✩✩✩) .......................... 1224.2.9 Exercise 9: Well formed braces (★★✩✩✩) ................ 1224.2.10 Exercise 10: Anagram (★★✩✩✩) ........................ 1234.2.11 Exercise 11: Morse Code (★★✩✩✩) ..................... 1234.2.12 Exercise 12: Pattern Checker (★★★✩✩) .................. 1244.2.13 Exercise 13: Tennis score (★★★✩✩) ..................... 1244.2.14 Exercise 14: Version numbers (★★✩✩✩) ................. 1254.2.15 Exercise 15: Conversion strToLong (★★✩✩✩) ........... 1254.2.16 Exercise 16: Print Tower (★★★✩✩) ...................... 1264.3 Solutions .................................................... 1274.3.1 Solution 1: Number conversions (★★✩✩✩) ............... 1274.3.2 Solution 2: Joiner (★✩✩✩✩) ............................ 1304.3.3 Solution 3: Reverse String (★★✩✩✩) .................... 1324.3.4 Solution 4: Palindrome (★★★✩✩)........................ 1344.3.5 Solution 5: No Duplicate Chars (★★★✩✩) ................ 1374.3.6 Solution 6: Remove Duplicate Letters (★★★✩✩) ........... 1384.3.7 Solution 7: Capitalize (★★✩✩✩) ......................... 1404.3.8 Solution 8: Rotation (★★✩✩✩) .......................... 1444.3.9 Solution 9: Well formed braces (★★✩✩✩) ................ 1454.3.10 Solution 10: Anagram (★★✩✩✩) ........................ 1474.3.11 Solution 11: Morse Code (★★✩✩✩)...................... 1484.3.12 Solution 12: Pattern Checker (★★★✩✩) .................. 1504.3.13 Solution 13: Tennis score (★★★✩✩) ..................... 1524.3.14 Solution 14: Version numbers (★★✩✩✩).................. 1564.3.15 Solution 15: Conversion strToLong (★★✩✩✩) ........... 1584.3.16 Solution 16: Print Tower (★★★✩✩)....................... 161viii Inhaltsverzeichnis5 Arrays ...................................................... 1655.1 Introduction.................................................. 1655.1.1 One-dimensional arrays ................................. 1665.1.2 Multidimensional arrays ................................. 1765.1.3 Typical errors .......................................... 1835.2 Exercises ................................................... 1845.2.1 Exercise 1: Even before odd numbers (★★✩✩✩) .......... 1845.2.2 Exercise 2: Flip (★★✩✩✩) .............................. 1845.2.3 Exercise 3: Palindrome (★★✩✩✩) ....................... 1845.2.4 Exercise 4: Inplace Rotate (★★★✩✩) .................... 1855.2.5 Exercise 5: Jewels Board Init (★★★✩✩) .................. 1855.2.6 Exercise 6: Jewels Board Erase Diamonds (★★★★✩) ...... 1875.2.7 Exercise 7: Spiral Traversal (★★★★✩) .................... 1885.2.8 Exercise 8: Add One to Array As Number (★★✩✩✩) ....... 1885.2.9 Exercise 9: Sudoku Checker (★★★✩✩)................... 1895.2.10 Exercise 10: Flood-Fill (★★✩✩✩) ........................ 1905.2.11 Exercise 11: Array Merge (★★✩✩✩) ..................... 1915.2.12 Exercise 12: Array Min and Max (★★✩✩✩) ............... 1915.2.13 Exercise 13: Array Split (★★★✩✩) ....................... 1925.2.14 Exercise 14: Minesweeper Board (★★★✩✩) .............. 1935.3 Solutions .................................................... 1955.3.1 Solution 1: Even before odd numbers (★★✩✩✩) ........... 1955.3.2 Solution 2: Flip (★★✩✩✩) .............................. 1995.3.3 Solution 3: Palindrome (★★✩✩✩)........................ 2035.3.4 Solution 4: Inplace Rotate (★★★✩✩) ..................... 2055.3.5 Solution 5: Jewels Board Init (★★★✩✩) .................. 2095.3.6 Solution 6: Jewels Board Erase Diamonds (★★★★✩) ...... 2165.3.7 Solution 7: Spiral Traversal (★★★★✩) .................... 2255.3.8 Solution 8: Add One to Array As Number (★★✩✩✩) ........ 2305.3.9 Solution 9: Sudoku Checker (★★★✩✩) ................... 2325.3.10 Solution 10: Flood-Fill (★★✩✩✩) ........................ 2385.3.11 Solution 11: Array Merge (★★✩✩✩)...................... 2425.3.12 Solution 12: Array Min and Max (★★✩✩✩) ................ 2465.3.13 Solution 13: Array Split (★★★✩✩) ....................... 2495.3.14 Solution 14: Minesweeper Board (★★★✩✩) ............... 254Inhaltsverzeichnis ix6 Date processing ............................................ 2616.1 Introduction.................................................. 2616.1.1 The enumerations DayOfWeek and Month ................ 2616.1.2 The classes LocalDate, LocalTime and LocalDateTime 2626.1.3 The class ZonedDateTime ............................. 2646.1.4 The class ZoneId ..................................... 2656.1.5 Class Duration....................................... 2666.1.6 The class Period ..................................... 2676.1.7 Date arithmetic ........................................ 2686.1.8 Formatting and parsing ................................. 2706.2 Exercises ................................................... 2726.2.1 Exercise 1: Leap Years (★✩✩✩✩) ....................... 2726.2.2 Exercise 2: Basic knowledge Date-API (★★✩✩✩).......... 2726.2.3 Exercise 3: Length of Month (★★✩✩✩) ................... 2736.2.4 Exercise 4: Time Zones (★★✩✩✩) ....................... 2736.2.5 Exercise 5: Time Zone Calculation (★★✩✩✩) ............. 2736.2.6 Exercise 6: Calculations with LocalDate ................. 2746.2.7 Exercise 7: Calendar output (★★★✩✩) ................... 2746.2.8 Exercise 8: Weekdays (★✩✩✩✩) ........................ 2756.2.9 Exercise 9: Sundays and leap years (★★✩✩✩) ............ 2766.2.10 Exercise 10: TemporalAdjuster (★★★✩✩)................. 2766.2.11 Exercise 11: NthWeekdayAdjuster (★★★✩✩) ............. 2776.2.12 Exercise 12: Payday-TemporalAdjuster (★★★✩✩) ......... 2776.2.13 Exercise 13: Formatting and Parsing (★★✩✩✩) ........... 2786.2.14 Exercise 14: Fault Tolerant Parsing (★★✩✩✩) ............. 2786.3 Solutions .................................................... 2796.3.1 Solution 1: Leap Years (★✩✩✩✩) ........................ 2796.3.2 Solution 2: Basic knowledge Date-API (★★✩✩✩) .......... 2806.3.3 Solution 3: Length of Month (★★✩✩✩) ................... 2816.3.4 Solution 4: Time Zones (★★✩✩✩) ....................... 2826.3.5 Solution 5: Time Zone Calculation (★★✩✩✩).............. 2836.3.6 Solution 6: Calculations with LocalDate ................. 2846.3.7 Solution 7: Calendar output (★★★✩✩) ................... 2866.3.8 Solution 8: Weekdays (★✩✩✩✩) ........................ 2896.3.9 Solution 9: Sundays and leap years (★★✩✩✩) ............ 2926.3.10 Solution 10: TemporalAdjuster (★★★✩✩) ................. 2946.3.11 Solution 11: NthWeekdayAdjuster (★★★✩✩) .............. 2956.3.12 Solution 12: Payday-TemporalAdjuster (★★★✩✩) .......... 2976.3.13 Solution 13: Formatting and Parsing (★★✩✩✩) ............ 3016.3.14 Solution 14: Fault Tolerant Parsing (★★✩✩✩) ............. 302x Inhaltsverzeichnis7 Basic data structures: lists, sets, and maps ................... 3057.1 Introduction.................................................. 3057.1.1 The interface Collection.............................. 3057.1.2 Lists and the interface List ......................... 3067.1.3 Sets and the interface Set .............................. 3077.1.4 Key-value mappings and the interface map ................ 3077.1.5 The stack as LIFO data structure ......................... 3087.1.6 The queue as FIFO data structure........................ 3097.2 Exercises ................................................... 3117.2.1 Exercise 1: Set operations (★★✩✩✩) .................... 3117.2.2 Exercise 2: List Reverse (★★✩✩✩) ...................... 3117.2.3 Exercise 3: Remove Duplicates (★★✩✩✩) ................ 3127.2.4 Exercise 4: Maximum Profit (★★★✩✩) ................... 3127.2.5 Exercise 5: Longest sequence (★★★✩✩) ................. 3137.2.6 Exercise 6: Own stack (★★✩✩✩) ........................ 3137.2.7 Exercise 7: Well-formed braces (★★✩✩✩) ................ 3137.2.8 Exercise 8: Check Magic Triangle (★★★✩✩) .............. 3147.2.9 Exercise 9: Pascal’s triangle (★★★✩✩) ................... 3147.2.10 Exercise 10: Most Frequent Elements (★★✩✩✩) .......... 3157.2.11 Exercise 11: Addition of digits (★★★✩✩) ................. 3157.2.12 Exercise 12: Compound Key (★★✩✩✩) .................. 3167.2.13 Exercise 13: List Merge (★★✩✩✩) ....................... 3167.2.14 Exercise 14: Excel Magic Select (★★✩✩✩) ............... 3177.3 Solutions .................................................... 3187.3.1 Solution 1: Set operations (★★✩✩✩) ..................... 3187.3.2 Solution 2: List Reverse (★★✩✩✩)....................... 3237.3.3 Solution 3: Remove Duplicates (★★✩✩✩) ................ 3267.3.4 Solution 4: Maximum Profit (★★★✩✩) .................... 3277.3.5 Solution 5: Longest sequence (★★★✩✩) ................. 3307.3.6 Solution 6: Own stack (★★✩✩✩) ........................ 3337.3.7 Solution 7: Well-formed braces (★★✩✩✩) ................ 3357.3.8 Solution 8: Check Magic Triangle (★★★✩✩)............... 3407.3.9 Solution 9: Pascal’s triangle (★★★✩✩) ................... 3447.3.10 Solution 10: Most Frequent Elements (★★✩✩✩) ........... 3467.3.11 Solution 11: Addition of digits (★★★✩✩) .................. 3487.3.12 Solution 12: Compound Key (★★✩✩✩) ................... 3527.3.13 Solution 13: List Merge (★★✩✩✩) ....................... 3547.3.14 Solution 14: Excel Magic Select (★★✩✩✩)................ 356Inhaltsverzeichnis xiII More advanced and tricky topics 3618 Advanced recursion ......................................... 3638.1 Memoization ................................................. 3638.1.1 Memoization for Fibonacci numbers ...................... 3638.1.2 Memoization for Pascal’s triangle ......................... 3658.2 Backtracking ................................................. 3688.2.1 n-queens problem ...................................... 3688.3 Exercises ................................................... 3728.3.1 Exercise 1: Towers of Hanoi (★★★✩✩) ................... 3728.3.2 Exercise 2: Edit Distance (★★★★✩) ..................... 3738.3.3 Exercise 3: Longest Common Subsequence (★★★✩✩) ..... 3738.3.4 Exercise 4: Way out of labyrinth (★★★✩✩) ................ 3748.3.5 Exercise 5: Sudoku Solver (★★★★✩) .................... 3758.3.6 Exercise 6: Math Operator Checker (★★★★✩) ............ 3768.3.7 Exercise 7: Water Bucket Problem (★★★✩✩) ............. 3778.3.8 Exercise 8: All palindrome substrings (★★★★✩) ........... 3788.3.9 Exercise 9: n-queens problem (★★★✩✩) ................. 3788.4 Solutions .................................................... 3798.4.1 Solution 1: Towers of Hanoi (★★★✩✩) ................... 3798.4.2 Solution 2: Edit Distance (★★★★✩) ...................... 3858.4.3 Solution 3: Longest Common Subsequence (★★★✩✩) ..... 3918.4.4 Solution 4: Way out of labyrinth (★★★✩✩) ................ 3948.4.5 Solution 5: Sudoku Solver (★★★★✩) ..................... 3978.4.6 Solution 6: Math Operator Checker (★★★★✩) ............. 4058.4.7 Solution 7: Water Bucket Problem (★★★✩✩) .............. 4108.4.8 Solution 8: All palindrome substrings (★★★★✩) ........... 4138.4.9 Solution 9: n-queens problem (★★★✩✩).................. 4179 Binary trees ................................................ 4259.1 Introduction.................................................. 4259.1.1 Structure, terminology and examples of use ............... 4259.1.2 Binary trees ........................................... 4269.1.3 Binary trees with order: binary search trees ............... 4279.1.4 Traversals ............................................. 4299.1.5 Balanced trees and other properties ...................... 4329.1.6 Trees for the examples and exercises ..................... 4349.2 Exercises ................................................... 4369.2.1 Exercise 1: Tree Traversal (★★✩✩✩) ..................... 4369.2.2 Exercise 2: In-, Pre- und Postorder iterative (★★★★✩)...... 4369.2.3 Exercise 3: Tree Height (★★✩✩✩) ....................... 4369.2.4 Exercise 4: Lowest Common Ancestor (★★★✩✩) .......... 4379.2.5 Exercise 5: Breadth-First (★★★✩✩) ...................... 437xii Inhaltsverzeichnis9.2.6 Exercise 6: Level Sum (★★★★✩) ........................ 4389.2.7 Exercise 7: Tree Rotate (★★★✩✩) ....................... 4389.2.8 Exercise 8: Reconstruction (★★★✩✩) .................... 4399.2.9 Exercise 9: Math Evaluation (★★✩✩✩) ................... 4399.2.10 Exercsie 10: Symmetry (★★✩✩✩) ....................... 4409.2.11 Exercise 11: Check Binary Search Tree (★★✩✩✩) ......... 4419.2.12 Exercise 12: Completeness (★★★★★) ................... 4419.2.13 Exercise 13: Tree Printer (★★★★★) ...................... 4439.3 Solutions .................................................... 4469.3.1 Solution 1: Tree Traversal (★★✩✩✩) ..................... 4469.3.2 Solution 2: In-, Pre- und Postorder iterative (★★★★✩) ...... 4489.3.3 Solution 3: Tree Height (★★✩✩✩) ....................... 4569.3.4 Solution 4: Lowest Common Ancestor (★★★✩✩) .......... 4579.3.5 Solution 5: Breadth-First (★★★✩✩) ...................... 4619.3.6 Solution 6: Level Sum (★★★★✩) ........................ 4639.3.7 Solution 7: Tree Rotate (★★★✩✩) ....................... 4679.3.8 Solution 8: Reconstruction (★★★✩✩) .................... 4709.3.9 Solution 9: Math Evaluation (★★✩✩✩) ................... 4769.3.10 Solution 10: Symmetry (★★✩✩✩) ....................... 4779.3.11 Solution 11: Check Binary Search Tree (★★✩✩✩) ......... 4819.3.12 Solution 12: Completeness (★★★★★) .................... 4839.3.13 Solution 13: Tree Printer (★★★★★) ...................... 49310 Searching and sorting ....................................... 50310.1 Introduction Search ........................................... 50310.1.1 Searching in Collections and Arrays ...................... 50310.1.2 Binary search with binarySearch() .................... 50510.2 Introduction Sort ............................................. 50610.2.1 Insertion Sort .......................................... 50610.2.2 Selection Sort ......................................... 50810.2.3 Merge Sort ............................................ 51010.2.4 Quick Sort ............................................ 51110.2.5 Bucket Sort ........................................... 51410.2.6 Final Thoughts ........................................ 51510.3 Exercises ................................................... 51610.3.1 Exercise 1: Contains All (★★✩✩✩)....................... 51610.3.2 Exercise 2: Partitioning (★★★✩✩) ....................... 51610.3.3 Exercise 3: Binary Search (★★✩✩✩)..................... 51710.3.4 Exercise 4: Insertion Sort (★★✩✩✩) ..................... 51710.3.5 Exercise 5: Selection Sort (★★✩✩✩) ..................... 51810.3.6 Exercise 6: Quick Sort (★★★✩✩) ........................ 51810.3.7 Exercise 7: Bucket Sort (★★✩✩✩) ....................... 51910.3.8 Exercise 8: Search in rotated data (★★★★✩).............. 519Inhaltsverzeichnis xiii10.4 Solutions .................................................... 52110.4.1 Solution 1: Contains All (★★✩✩✩) ....................... 52110.4.2 Solution 2: Partitioning (★★★✩✩) ........................ 52210.4.3 Solution 3: Binary Search (★★✩✩✩) ..................... 52410.4.4 Solution 4: Insertion Sort (★★✩✩✩)...................... 52810.4.5 Solution 5: Selection Sort (★★✩✩✩) ..................... 52910.4.6 Solution 6: Quick Sort (★★★✩✩) ........................ 53010.4.7 Solution 7: Bucket Sort (★★✩✩✩) ....................... 53210.4.8 Solution 8: Search in rotated data (★★★★✩) .............. 53411 Conclusion and supplementary literature ..................... 54111.1 Conclusion .................................................. 54111.1.1 Lessons learned per chapter ............................ 54111.1.2 Noteworthy ............................................ 54311.2 Puzzles ..................................................... 54411.2.1 Gold bags – detect the fake ............................. 54511.2.2 Horse race – determine fastest three horses ............... 54611.3 Supplementary literature ...................................... 549III Appendix 553A Quick start JShell ........................................... 555A.1 Java + REPL => jshell ...................................... 555B Short introduction JUnit 5 ................................... 561B.1 Writing and running tests ...................................... 561B.1.1 Example: A first unit test ................................ 561B.1.2 Fundamentals of writing and running tests................. 562B.1.3 Handling expected exceptions with assertThrows() ...... 565B.2 Parameterized tests with JUnit 5 ............................... 566C Quick start O-notation ....................................... 569C.1 Estimations with the O-notation ................................ 569C.1.1 Complexity classes ..................................... 570C.1.2 Complexity and program running time .................... 572

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account