leetcode 17,93,131

17. 电话号码的字母组合

leetcode 17,93,131_第1张图片

 注意点:通过一个数组映射;通过digits的大小和index的大小作为判断条件

class Solution {
public:

    string sa[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    vector res;
    string s;
    vector letterCombinations(string digits) {
        if(digits=="") return res;
        backtracking(digits,0);
        return res;
    }

    void backtracking(string digits,int index){
        if(index==digits.size()){
            res.push_back(s);
            return ;
        }
        int dig=digits[index]-'0';//转化成整数
        for(int i=0;i

 

93. 复原 IP 地址

leetcode 17,93,131_第2张图片

class Solution {
public:
//字符串的insert和erase用法
//字符串转换为数字
//
// bool isvaild(string s,int i,int j){
//     if(i>j) return false;
//     if(j-i>0&&s[i]=='0') return false;
//     if(j-i==0&&s[i]=='0') return true;
//     if(j-i>=3) return false;
//     int num=0;
//     for(int k=i;k<=j;k++){
//         if(s[k]>'9'||s[k]<'0') return false;
//         num=num*10+(s[k]-'0');
//         
//     }
//     return true;
// }

bool isvaild(string s,int i, int j){
    if(i>j) return false;     
    if(j-i>0&&s[i]=='0') return false;
    //if(j-i==0&&s[i]=='0') return true;
    if(j-i>=3) return false;

    string str = s.substr(i,j-i+1);
    int num = stoi(str,0,0);
    if(num>255) return false;
    return true;

}

void backtracking(string s,int start,int pointnum){
    if(pointnum==3&&isvaild(s,start,s.size()-1)){
        res.push_back(s);
        return;
    }
    for(int i=start;i res;
    vector restoreIpAddresses(string s) {
        backtracking(s,0,0);
        return res;
    }
};

 

131. 分割回文串

leetcode 17,93,131_第3张图片

class Solution {
public:
    vector> res;
    vector tmp;
    vector> partition(string s) {
        backtracking(s,0);
        return res;
    }

    void backtracking(string s,int start){
        if(start>=s.size()){
            res.push_back(tmp);
            return;
        }

        for(int i=start;istart){
            if(s[i]!=s[start]){
                return false;
            }else{
                start++;
                i--;
            }
        }
        return true;
    }
};

你可能感兴趣的:(leetcode,算法)