1427. Split Array into Fibonacci Sequence
class Solution {
public:
/**
* @param S: a string S of digits
* @return: Return any Fibonacci-like sequence split from S
*/
vector<int> splitIntoFibonacci(string &S) {
// write your code here
vector<int> res;
vector<int> res1;
dfs(S, res, res1, 0);
return res1;
}
void dfs(string &S, vector<int> &res, vector<int>&res1, int start){
int size = res.size();
if(size >= 3){
if(res[size - 1] != res[size - 2] + res[size - 3]){
return;
}
}
if(start == S.size()){
int strSize = 0;
for(int i = 0; i < size; i++){
strSize += to_string(res[i]).size();
}
if(S.size() == strSize && res.size() >= 3){
res1 = res;
}
return;
}
for(int i = start; i < S.size(); i++){
if(S[i] == '0' && i > start){
return;
}
int cur = stoi(S.substr(start, i - start + 1));
res.push_back(cur);
dfs(S, res, res1, i + 1);
res.pop_back();
}
return;
}
};
Comments
Post a Comment