题解 | #基因变异最小次数#

基因变异最小次数

https://www.nowcoder.com/practice/ca6b659a3fde42c59276c9db98febd94

知识点

哈希,队列

解题思路

使用set来存放bank数组,队列来存放每一轮遍历的字符串。

遍历队列中的字符串,每次替换字符串中的一个字符,看是否在set中。

如果在set中表示可以继续修改,存放在队列中,此个字符串使用移除set中相应字符串。

当替换之后发现字符串与end相同则返回遍历队列的次数。

Java题解

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param start string字符串 
     * @param end string字符串 
     * @param bank string字符串一维数组 
     * @return int整型
     */
    public int minMutation (String start, String end, String[] bank) {
        // write code here
        int n = start.length(), m = end.length();
        Set<String> set = new HashSet<>(Arrays.asList(bank));
        if(!set.contains(end) || n != m){
            return -1;
        }
        char[] charArr = new char[]{'A','C','G','T'};
        Deque<String> deque = new LinkedList<>();
        deque.offerFirst(start);
        int ans = 0;
        while(!deque.isEmpty()){
            ans ++;
            int size = deque.size();
            for (int i = 0; i < size; i++){
                String s = deque.pollLast();
                char[] sChar = s.toCharArray();
                for(int j = 0; j < s.length(); j++){
                    char oldChar = sChar[j];
                    for(int l = 0; l < 4; l++){
                        if(charArr[l] == oldChar){
                            continue;
                        }
                        sChar[j] = charArr[l];
                        String newS = new String(sChar);
                        if(newS.equals(end)){
                            return ans;
                        }
                        if(set.contains(newS)){
                            deque.offerFirst(newS);
                            set.remove(newS);
                        }
                    }
                    sChar[j] = oldChar;
                }

            }

        }
        return -1;
    }
}

全部评论

相关推荐

牛客33727151号:不是哥们我以为驾照是段子呢
点赞 评论 收藏
分享
挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务