PHP Exercises: Restore the original string by entering the compressed string with this rule
PHP: Exercise-72 with Solution
When character are consecutive in a string , it is possible to shorten the character string by replacing the character with a certain rule. For example, in the case of the character string YYYYY, if it is expressed as # 5 Y, it is compressed by one character.
Write a PHP program to restore the original string by entering the compressed string with this rule. However, the # character does not appear in the restored character string.
Note: The original sentences are uppercase letters, lowercase letters, numbers, symbols, less than 100 letters, and consecutive letters are not more than 9 letters.
Input: Multiple character strings are given. One string is given per line
Sample Solution:
PHP Code:
<?php
// Input string containing "@" symbols with repetition information
$str = "@88 + 1 = 1@80";
// Initialize index for traversing the input string
$index = 0;
// Initialize an array to store the resulting characters
$result = array();
// Loop through each character in the input string
while ($index < strlen($str)) {
// Get the current character
$t = $str[$index++];
// Check if the current character is "@"
if ($t == "@") {
// Extract the length and character information for repetition
$len = $str[$index++];
$char = $str[$index++];
// Initialize an empty string to store repeated characters
$run = "";
// Repeat the character for the specified length
for ($i = 0; $i < $len; $i++) {
$run .= $char;
}
// Add the repeated characters to the result array
$result[] = $run;
} else {
// If the character is not "@", add it directly to the result array
$result[] = $t;
}
}
// Output the final result by concatenating the characters in the result array
echo implode("", $result);
?>
Explanation:
- Initialize Input and Variables:
- Defines the input string $str = "@88 + 1 = 1@80", which contains the "@" symbol to denote sections with repetition information.
- Initializes $index = 0 to traverse the string and $result = array() to store processed characters.
- Loop Through Each Character in $str:
- Uses a while loop to go through the string character by character until $index reaches the end.
- Check for "@" Symbol:
- If the character at $index is "@", it indicates the start of a repetition pattern.
- Extract Repetition Information:
- Reads the next two characters after "@":
- $len: Specifies the number of times to repeat the following character.
- $char: The character to be repeated.
- Create Repeated String:
- Uses a for loop to create a string ($run) with $char repeated $len times and adds it to $result.
- Handle Non-"@" Characters:
- If the character is not "@", it’s added directly to $result.
- Output the Result:
- Combines all elements in $result into a single string and displays it using echo implode("", $result);.
Sample Input:
@88 + 1 = 1@80
Sample Output:
88888888 + 1 = 100000000
Flowchart:
PHP Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a PHP program to read the mass data and find the number of islands.
Next: Write a PHP program that compute the area of the polygon.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/php-exercises/php-basic-exercise-72.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics