There is a programming language with only four operations and one variable X
:
++X
and X++
increments the value of the variable X
by 1
.--X
and X--
decrements the value of the variable X
by 1
.Initially, the value of X
is 0
.
Given an array of strings operations
containing a list of operations, return the final value of X
after performing all the operations.
Example 1:
Input: operations = [ "--X ", "X++ ", "X++ "] Output: 1 Explanation: The operations are performed as follows: Initially, X = 0. --X: X is decremented by 1, X = 0 - 1 = -1. X++: X is incremented by 1, X = -1 + 1 = 0. X++: X is incremented by 1, X = 0 + 1 = 1.
Example 2:
Input: operations = [ "++X ", "++X ", "X++ "] Output: 3 Explanation: The operations are performed as follows: Initially, X = 0. ++X: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. X++: X is incremented by 1, X = 2 + 1 = 3.
Example 3:
Input: operations = [ "X++ ", "++X ", "--X ", "X-- "] Output: 0 Explanation: The operations are performed as follows: Initially, X = 0. X++: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. --X: X is decremented by 1, X = 2 - 1 = 1. X--: X is decremented by 1, X = 1 - 1 = 0.
Constraints:
1 <= operations.length <= 100
operations[i]
will be either "++X "
, "X++ "
, "--X "
, or "X-- "
.program main
implicit none
integer :: i, j, k
character(len=4) :: op
character(len=5), dimension(4) :: ops = ["++X ", "X++ ", "--X ", "X-- "]
integer :: x = 0
do i = 1, size(ops)
read(ops(i), *) op
select case (op)
case ("++X ")
x = x + 1
case ("X++ ")
x = x + 1
case ("--X ")
x = x - 1
case ("X-- ")
x = x - 1
end select
end do
print '(I0)', x
end program main
0
program main
implicit none
integer :: i, x, n
character(len=5) :: operations(100)
! read the input
read(*,*) n
do i = 1, n
read(*,*) operations(i)
end do
! initialize x
x = 0
! perform the operations
do i = 1, n
select case(operations(i))
case('++X ')
x = x + 1
case('X++ ')
x = x + 1
case('--X ')
x = x - 1
case('X-- ')
x = x - 1
end select
end do
! print the result
write(*,*) x
end program main
At line 8 of file temp.f95 (unit = 5, file = 'stdin') Fortran runtime error: End of file Error termination. Backtrace: #0 0x7a22f9925960 in ??? #1 0x7a22f99264d9 in ??? #2 0x7a22f9b7a17b in ??? #3 0x7a22f9b73684 in ??? #4 0x7a22f9b742aa in ??? #5 0x5c2558bfb22a in MAIN__ #6 0x5c2558bfb44d in main
def max_value(n: str, x: int) -> str:
is_negative = n[0] == '-'
pos = 1 if is_negative else 0
while pos < len(n):
if (is_negative and int(n[pos]) > x) or (not is_negative and int(n[pos]) < x):
break
pos += 1
return n[:pos] + str(x) + n[pos:]
The algorithm starts by checking if the given integer n
is negative or not, and initializes the position pos
where we want to insert the integer x
. It then iterates through the digits of n
. For negative numbers, it checks to find the first digit that is greater than x
. For positive numbers, it looks for the first digit that is smaller than x
. If found, we break out of the loop.
Finally, we return the new string by concatenating the substring before the position pos
, the digit x
, and the substring after the position.
The algorithm has a complexity of O(n) where n is the length of the input string.
#include <string>
std::string maxValue(std::string n, int x) {
bool is_negative = n[0] == '-';
int pos = is_negative ? 1 : 0;
while (pos < n.size()) {
if (is_negative && n[pos] - '0' > x || !is_negative && n[pos] - '0' < x) {
break;
}
pos++;
}
return n.substr(0, pos) + std::to_string(x) + n.substr(pos);
}
The algorithm starts by checking if the given integer n
is negative or not, and initializes the position pos
where we want to insert the integer x
. It then iterates through the digits of n
. For negative numbers, it checks to find the first digit that is greater than x
. For positive numbers, it looks for the first digit that is smaller than x
. If found, we break out of the loop.
Finally, we return the new string by concatenating the substring before the position pos
, the digit x
, and the substring after the position.
The algorithm has a complexity of O(n) where n is the length of the input string.