Convert A Mobile Numeric Keypad Sequence to Equivalent Sentence

In the early days of mobile phones, text messaging was accomplished through numeric keypads. Each number key (2-9) corresponded to a set of letters, and users had to press keys multiple times to get the desired character.

For example, pressing '2' once would yield 'A', pressing it twice would yield 'B', and so on. This system, known as T9 or predictive text, is largely obsolete now, but it remains a fascinating problem in the realm of programming: how to convert a sequence of keypresses into the equivalent sentence.

In this section, we will explore a Java-based solution to this problem. We will start by defining the problem and understanding the mapping between keys and characters. Then, we will implement a function to convert the keypress sequence into a readable sentence. Finally, we will test our implementation with various inputs to ensure its accuracy.

Problem Definition

Given a string of numbers representing keypresses on a mobile numeric keypad, our goal is to convert this string into its corresponding sentence. Here's the mapping of keys to characters:

2: ABC

3: DEF

4: GHI

5: JKL

6: MNO

7: PQRS

8: TUV

9: WXYZ

Each key can be pressed multiple times to produce different letters. For instance:

'2' -> 'A'

'22' -> 'B'

'222' -> 'C'

Spaces can be represented by '0'.

Approach

To solve this problem, we need to:

  • Parse the input string.
  • Map each sequence of keypresses to its corresponding character.
  • Construct the output sentence.

We will use a hashmap to store the mapping of keypress sequences to characters. Then, we will iterate through the input string, identify sequences of repeated digits, and use our hashmap to convert these sequences to characters.

Implementation

Let's dive into the implementation step by step.

Step 1: Define the Mapping

First, we define the mapping of keypress sequences to characters using a hashmap.

Step 2: Parse the Input String

We iterate through the input string character by character. We use a StringBuilder to accumulate sequences of the same digit. When we encounter a different digit or reach the end of the string, we convert the accumulated sequence to the corresponding character using our hashmap.

Step 3: Construct the Output Sentence

We append each character to a StringBuilder to construct the final sentence. After processing the entire input string, we return the constructed sentence.

Let's test our implementation with different inputs to ensure its accuracy.

Here's the updated version of the program where the user can input a keypad sequence, and the program will output the equivalent sentence.

File Name: KeypadSequenceToSentence.java

Output:

 
Enter the keypad sequence:
2345
ADGJ   

Conclusion

In this section, we have explored how to convert a mobile numeric keypad sequence into an equivalent sentence using Java. We defined the problem, outlined the approach, and implemented a solution using a hashmap to map keypress sequences to characters. Our implementation correctly parses the input string and constructs the output sentence. We also tested our solution with various inputs to ensure its accuracy.

This problem is a great exercise in string manipulation and hashmap usage in Java. It also offers a glimpse into the challenges and ingenuity involved in early mobile phone text input methods. Whether we are a beginner or an experienced programmer, solving this problem will enhance our understanding of Java and string processing techniques.