Learning Journal: Solving CodingBat Challenges (String-1, String-2, Array-1, Logic-1, Map-1, Functional-1)
During my work on the CodingBat challenges in Java, I focused on six key sections: String-1, String-2, Array-1, Logic-1, Map-1, and Functional-1. Each section presented different types of problems that required varying approaches and problem-solving techniques.
Approach and Planning
For most problems, especially in the String and Array sections, I started by carefully reading the problem statement to understand the inputs and desired outputs. Because these problems often involved manipulating strings or arrays in specific ways, I found it helpful to first visualize examples and think through the steps logically before writing code.
In Logic-1, the problems were mostly about boolean logic and simple conditionals, so I planned by mapping out the logical conditions needed. For Map-1, I paid extra attention to key-value handling and cases where keys might or might not exist.
The Functional-1 section was a bit different because it introduced functional programming concepts like lambdas and streams. I had to review and apply these concepts carefully, sometimes writing code snippets to test them out.
What Worked
- Planning out the logic before coding helped me avoid unnecessary bugs, especially in string and array problems.
- Writing helper comments or pseudocode made it easier to translate the logic into Java syntax.
- Using Java’s built-in string and array methods simplified many solutions.
- Incrementally testing code with simple input examples caught errors early.
- For Map problems, checking for key existence before updating values was crucial.
- Exploring Functional-1 problems broadened my understanding of functional programming in Java, and small experiments helped solidify concepts.
What Did Not Work
- At times, I tried to solve problems purely by writing code without fully planning, which resulted in syntax errors or incorrect logic.
- Some problems in String-2 and Functional-1 required multiple attempts because the edge cases weren’t obvious at first.
- Initially, I underestimated the importance of handling null or empty inputs, especially in Map and Functional problems.
- Overcomplicating solutions instead of using simple Java API methods slowed progress.
Number of Tries
Most problems in String-1, Array-1, and Logic-1 took 1-2 attempts to solve, as they were more straightforward. String-2 and Map-1 problems often took 2-3 tries because of additional complexity or key handling. Functional-1 challenges were the most difficult, sometimes requiring 3-5 tries as I adapted to functional syntax and stream operations.