其他分享
首页 > 其他分享> > 2022-5-7 每日一题-leetcode

2022-5-7 每日一题-leetcode

作者:互联网

题目链接:https://leetcode-cn.com/problems/minimum-genetic-mutation/

个人题解:DFS

  1. 在 \(bank\) 中找到与 \(start\) 相差一个字符的字符串;
  2. 判断这个字符串在没在集合里面
  3. \(cnt++\) ,递归
  4. \(cnt--\) ,回溯

代码:

class Solution {
public:
    unordered_set<string> S;
    int res=INT_MAX,cnt=0;

    int minMutation(string start, string end, vector<string>& bank) {
        if(start==end) res=min(res,cnt);
        for(auto &each:bank){
            int dif=0;
            for(int i=0;i<each.size();i++){
                if(start[i]!=each[i]) dif++;
            }
            // 相差一个 && 集合里面没有
            if(dif==1 && S.find(each)==S.end()){
                S.insert(each);
                cnt++;
                minMutation(each,end,bank);
                cnt--;
                S.erase(each);
            }
        }
        return res==INT_MAX ? -1 : res;
    }
};

结果:
image

标签:cnt,string,int,res,start,2022,一题,leetcode,bank
来源: https://www.cnblogs.com/cytcnblogs/p/16243881.html