Remove repeated digits in a given number
Given an integer number, the task is to remove any consecutive repeated digits from it and return the modified number. If the number is negative, the sign should be retained in the output. For instance, if the input number is -123300, the output should be -1230.
Example
Let's consider an example to understand the problem better:
Input: 1134332
Output: 13432
Pseudocode
Procedure removeRecurring(x):
num = x
if x < 0:
num = -num
back = num % 10
current = 0
ans = back
mul = 10
num = num / 10
while num > 0:
current = num % 10
if current != back:
ans = (current * mul) + ans
back = current
mul *= 10
num /= 10
if x < 0:
ans = -ans
Display "Given number:", x
Display "Output:", ans
Algorithm Explanation
The algorithm takes an input integer x and initializes a variable num with the absolute value of x. If x is negative, num will hold its positive counterpart. The algorithm then extracts the last digit of num and stores it in back. This digit will serve as a reference for comparison.
The algorithm also initializes the variable ans with the last digit, as the final result will be constructed digit by digit. The variable mul is initialized with 10, which will be used to position the current digit properly in the final result.
Next, the algorithm starts a loop to iterate through the remaining digits of num (excluding the last digit already stored in back). In each iteration, it extracts the next digit, current, and compares it with back. If current is different from back, it means a new digit has been found, and it needs to be added to the result. The algorithm places current at the beginning of ans and updates back to the value of current. It also adjusts the value of mul for the next digit position.
This process continues until all digits have been processed. After the loop ends, the algorithm checks if the original input x was negative. If so, it makes ans negative as well to match the sign of the input.
Finally, the algorithm displays the original input x and the modified number ans as the output.
Code Solution
Here given code implementation process.
/*
C Program for
Remove repeated digits in a given number
*/
#include <stdio.h>
// Remove recurring digits in a given number
void removeRecurring(int x)
{
int num = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
int back = num % 10;
int current = 0;
int ans = back;
int mul = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current *mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
printf("\n Given number : %d", x);
printf("\n Output : %d", ans);
}
int main()
{
// Test
removeRecurring(1134332);
removeRecurring(-123300);
return 0;
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
/*
Java Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
public void removeRecurring(int x)
{
int num = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
int back = num % 10;
int current = 0;
int ans = back;
int mul = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
System.out.print("\n Given number : " + x);
System.out.print("\n Output : " + ans);
}
public static void main(String[] args)
{
Recurring task = new Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
// Include header file
#include <iostream>
using namespace std;
/*
C++ Program for
Remove repeated digits in a given number
*/
class Recurring
{
public:
// Remove recurring digits in a given number
void removeRecurring(int x)
{
int num = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
int back = num % 10;
int current = 0;
int ans = back;
int mul = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current *mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
cout << "\n Given number : " << x;
cout << "\n Output : " << ans;
}
};
int main()
{
Recurring task = Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
return 0;
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
// Include namespace system
using System;
/*
C# Program for
Remove repeated digits in a given number
*/
public class Recurring
{
// Remove recurring digits in a given number
public void removeRecurring(int x)
{
int num = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
int back = num % 10;
int current = 0;
int ans = back;
int mul = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
Console.Write("\n Given number : " + x);
Console.Write("\n Output : " + ans);
}
public static void Main(String[] args)
{
Recurring task = new Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
<?php
/*
Php Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
public function removeRecurring($x)
{
$num = $x;
if ($x < 0)
{
// When given number is negative
$num = -$num;
}
// Define some auxiliary variables
$back = $num % 10;
$current = 0;
$ans = $back;
$mul = 10;
$num = intval($num / 10);
while ($num > 0)
{
$current = $num % 10;
if ($current != $back)
{
// Add current digit at beginning of result
$ans = ($current * $mul) + $ans;
$back = $current;
$mul *= 10;
}
// reduce number
$num = intval($num / 10);
}
if ($x < 0)
{
$ans = -$ans;
}
// Display result
echo "\n Given number : ". $x;
echo "\n Output : ". $ans;
}
}
function main()
{
$task = new Recurring();
// Test
$task->removeRecurring(1134332);
$task->removeRecurring(-123300);
}
main();
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
/*
Node Js Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
removeRecurring(x)
{
var num = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
var back = num % 10;
var current = 0;
var ans = back;
var mul = 10;
num = parseInt(num / 10);
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num = parseInt(num / 10);
}
if (x < 0)
{
ans = -ans;
}
// Display result
process.stdout.write("\n Given number : " + x);
process.stdout.write("\n Output : " + ans);
}
}
function main()
{
var task = new Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
main();
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
# Python 3 Program for
# Remove repeated digits in a given number
class Recurring :
# Remove recurring digits in a given number
def removeRecurring(self, x) :
num = x
if (x < 0) :
# When given number is negative
num = -num
# Define some auxiliary variables
back = num % 10
current = 0
ans = back
mul = 10
num = int(num / 10)
while (num > 0) :
current = num % 10
if (current != back) :
# Add current digit at beginning of result
ans = (current * mul) + ans
back = current
mul *= 10
num = int(num /
# reduce number
10)
if (x < 0) :
ans = -ans
# Display result
print("\n Given number : ", x, end = "")
print("\n Output : ", ans, end = "")
def main() :
task = Recurring()
# Test
task.removeRecurring(1134332)
task.removeRecurring(-123300)
if __name__ == "__main__": main()
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
# Ruby Program for
# Remove repeated digits in a given number
class Recurring
# Remove recurring digits in a given number
def removeRecurring(x)
num = x
if (x < 0)
# When given number is negative
num = -num
end
# Define some auxiliary variables
back = num % 10
current = 0
ans = back
mul = 10
num = num / 10
while (num > 0)
current = num % 10
if (current != back)
# Add current digit at beginning of result
ans = (current * mul) + ans
back = current
mul *= 10
end
# reduce number
num /= 10
end
if (x < 0)
ans = -ans
end
# Display result
print("\n Given number : ", x)
print("\n Output : ", ans)
end
end
def main()
task = Recurring.new()
# Test
task.removeRecurring(1134332)
task.removeRecurring(-123300)
end
main()
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
/*
Scala Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
def removeRecurring(x: Int): Unit = {
var num: Int = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
var back: Int = num % 10;
var current: Int = 0;
var ans: Int = back;
var mul: Int = 10;
num = (num / 10).toInt;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num = (num / 10).toInt;
}
if (x < 0)
{
ans = -ans;
}
// Display result
print("\n Given number : " + x);
print("\n Output : " + ans);
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Recurring = new Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
/*
Swift 4 Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
func removeRecurring(_ x: Int)
{
var num: Int = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
var back: Int = num % 10;
var current: Int = 0;
var ans: Int = back;
var mul: Int = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
print("\n Given number : ", x, terminator: "");
print("\n Output : ", ans, terminator: "");
}
}
func main()
{
let task: Recurring = Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
main();
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
/*
Kotlin Program for
Remove repeated digits in a given number
*/
class Recurring
{
// Remove recurring digits in a given number
fun removeRecurring(x: Int): Unit
{
var num: Int = x;
if (x < 0)
{
// When given number is negative
num = -num;
}
// Define some auxiliary variables
var back: Int = num % 10;
var current: Int ;
var ans: Int = back;
var mul: Int = 10;
num = num / 10;
while (num > 0)
{
current = num % 10;
if (current != back)
{
// Add current digit at beginning of result
ans = (current * mul) + ans;
back = current;
mul *= 10;
}
// reduce number
num /= 10;
}
if (x < 0)
{
ans = -ans;
}
// Display result
print("\n Given number : " + x);
print("\n Output : " + ans);
}
}
fun main(args: Array < String > ): Unit
{
var task: Recurring = Recurring();
// Test
task.removeRecurring(1134332);
task.removeRecurring(-123300);
}
Output
Given number : 1134332
Output : 13432
Given number : -123300
Output : -1230
Time Complexity
Let's analyze the time complexity of the algorithm. The main part of the algorithm involves iterating through the digits of the input number x. The number of digits in x can be represented as O(log10(x)). For each digit, the algorithm performs constant-time operations, so the overall time complexity of the algorithm is O(log10(x)), which can also be approximated as O(log n), where n is the magnitude of the input number.
Resultant Output Explanation
Let's understand the resultant outputs of the example test cases:
Given number: 1134332
Output: 13432
In this example, the input number is 1134332. The algorithm removes the recurring digits 1 and 3, resulting in the output 13432.
Given number: -123300
Output: -1230
Here, the input number is -123300. The algorithm removes the recurring digit 0, and since the number is negative, the output retains the negative sign, resulting in -1230.
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment