解题思路
s的最大长度为20,使用DFS
代码
class Solution {
public boolean splitString(String s) {
long ans = 0;
for(int i = 0; i < s.length() - 1; i++){//至少两个空字符串
ans = ans *10 + s.charAt(i) - '0';
if(ans > 10000000000L){
return false;
}
if(dfs(s, ans, i+1)) return true;
}
return false;
}
public boolean dfs(String s, long pre, int k){
if(k == s.length()) return true;
long ans = 0;
for(int i = k; i < s.length(); i++){
ans = ans *10 + s.charAt(i) - '0';
if(ans > 10000000000L){
return false;
}
if(pre - 1 == ans && dfs(s,ans,i+1)) return true;
if(ans >= pre) return false;
}
return false;
}
}