1946. Largest Number After Mutating Substring

ss
Jul 25, 2021

--

大意了, 把他想的太複雜了

我們要注意到這必須是連續的mutating, 所以假設前面改完中間沒改後, 就要直接break了, 即便你在後面發現有可以更換的數字

所以我們先設一個flag, 倘若字串中的數字在更改後可以變更大, 我們就更換並且把flag設成true, 說明已經被改過了, 如果看到不需要改變的, 即可跳出, 因為在後面即使發現可以更改的也不再連續

時間複雜度為O(N), 空間複雜度為O(1)

class Solution {
public:
string maximumNumber(string num, vector<int>& change) {
bool flag = false;
for(int i = 0; i < num.size();i++){
int before = num[i] - '0';
int after = change[before];
if(before < after){
flag = true;
num[i] = after + '0';
}else if(before == after){
continue;
}else{
if(flag){
break;
}
continue;
}
}
return num;
}
};

--

--

ss
ss

No responses yet