3461. Check If Digits Are Equal in String After Operations I
You are given a string s
consisting of digits. Perform the following operation repeatedly until the string has exactly two digits:
- For each pair of consecutive digits in
s
, starting from the first digit, calculate a new digit as the sum of the two digits modulo 10. - Replace
s
with the sequence of newly calculated digits, maintaining the order in which they are computed.
Return true
if the final two digits in s
are the same; otherwise, return false
.
Example 1:
Input: s = "3902"
Output: true
Explanation:
- Initially,
s = "3902"
- First operation:
(s[0] + s[1]) % 10 = (3 + 9) % 10 = 2
(s[1] + s[2]) % 10 = (9 + 0) % 10 = 9
(s[2] + s[3]) % 10 = (0 + 2) % 10 = 2
s
becomes"292"
- Second operation:
(s[0] + s[1]) % 10 = (2 + 9) % 10 = 1
(s[1] + s[2]) % 10 = (9 + 2) % 10 = 1
s
becomes"11"
- Since the digits in
"11"
are the same, the output istrue
.
Example 2:
Input: s = "34789"
Output: false
Explanation:
- Initially,
s = "34789"
. - After the first operation,
s = "7157"
. - After the second operation,
s = "862"
. - After the third operation,
s = "48"
. - Since
'4' != '8'
, the output isfalse
.
Constraints:
3 <= s.length <= 100
s
consists of only digits.
Solution:
class Solution {
public boolean hasSameDigits(String s) {
char[] sArrayChar = s.toCharArray();
int n = sArrayChar.length;
int[] sArray = new int[n]; // 5
for (int i = 0; i < n; i++){
sArray[i] = Character.getNumericValue(sArrayChar[i]);
}
int[] result = new int[2];
while(n > 2){
int[] cur = new int[n - 1]; // 4
n = n - 1;//4
for (int i = 0; i < n; i++){//4
int first = sArray[i] -'0';
int second = sArray[i + 1] -'0';
cur[i] = (first + second)%10;
}
sArray = cur;
if (n == 2){
result = cur;
}
}
if (result[0] == result[1]){
return true;
}else{
return false;
}
}
}