Find Shortest Word Edit Path in python
Are Warlocks Arcane or Divine?
How can a jailer prevent the Forge Cleric's Artisan's Blessing from being used?
Greatest common substring
Indicating multiple different modes of speech (fantasy language or telepathy)
Reply ‘no position’ while the job posting is still there (‘HiWi’ position in Germany)
Adding empty element to declared container without declaring type of element
How to check participants in at events?
What was required to accept "troll"?
Is there enough fresh water in the world to eradicate the drinking water crisis?
The most efficient algorithm to find all possible integer pairs which sum to a given integer
Freedom of speech and where it applies
Does "Dominei" mean something?
Bob has never been a M before
The One-Electron Universe postulate is true - what simple change can I make to change the whole universe?
Resetting two CD4017 counters simultaneously, only one resets
Lightning Web Component - do I need to track changes for every single input field in a form
Can I use my Chinese passport to enter China after I acquired another citizenship?
Was the picture area of a CRT a parallelogram (instead of a true rectangle)?
Can a malicious addon access internet history and such in chrome/firefox?
Visiting the UK as unmarried couple
Are taller landing gear bad for aircraft, particulary large airliners?
Female=gender counterpart?
Why are on-board computers allowed to change controls without notifying the pilots?
Word describing multiple paths to the same abstract outcome
Find Shortest Word Edit Path in python
$begingroup$
Find the Shortest Word Edit Path
I was given this problem from an interview.
#Given two words source and target, and a list of words words,
#find the length of the shortest series of edits that transforms source to target.
#Each edit must change exactly one letter at a time, and each
#intermediate word (and the final target word) must exist in words.
If the task is impossible, return -1.
Examples:
source = "bit", target = "dog" words = ["but", "put", "big", "pot",
"pog", "dog", "lot"]
output: 5 explanation: bit -> but -> put -> pot -> pog -> dog has 5
transitions. source = "no", target = "go" words = ["to"]
output: -1
def one_letter_difference(current_word, next_word):
count = 0
for i in range(len(current_word) -1):
if current_word[i] != next_word[i]:
count += 1;
if count == 1:
return True
else:
return False
def shortestWordEditPath(source, target, words):
"""
@param source: str
@param target: str
@param words: str[]
@return: int
Input: source = "bit", target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
Output: 5
explanation:
1 -> 1 -> 1 -> 1 -> 1
(source) bit -> but -> put -> pot -> pog -> dog (target)
has minimum of 5 transitions
"""
graph =
for i in range(-1, len(words)):
if i == -1:
current_word = source
else:
current_word = words[i]
graph[current_word] = []
for word in range(len(words)):
next_word = words[word]
if one_letter_difference(current_word, next_word):
graph[current_word].append(next_word)
#perform BFS
queue = collections.deque()
seen = set() # visited words
queue.append([source, 1])
seen.add(source)
while len(queue) > 0:
current, distance = queue.popleft()
if current == target: return distance
for neighbor in graph[current]:
if neighbor not in seen:
queue.append([neighbor, distance +1])
seen.add(neighbor)
return -1
source = "bit"
target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
test = shortestWordEditPath(source, target,words)
print(test)
python interview-questions
$endgroup$
add a comment |
$begingroup$
Find the Shortest Word Edit Path
I was given this problem from an interview.
#Given two words source and target, and a list of words words,
#find the length of the shortest series of edits that transforms source to target.
#Each edit must change exactly one letter at a time, and each
#intermediate word (and the final target word) must exist in words.
If the task is impossible, return -1.
Examples:
source = "bit", target = "dog" words = ["but", "put", "big", "pot",
"pog", "dog", "lot"]
output: 5 explanation: bit -> but -> put -> pot -> pog -> dog has 5
transitions. source = "no", target = "go" words = ["to"]
output: -1
def one_letter_difference(current_word, next_word):
count = 0
for i in range(len(current_word) -1):
if current_word[i] != next_word[i]:
count += 1;
if count == 1:
return True
else:
return False
def shortestWordEditPath(source, target, words):
"""
@param source: str
@param target: str
@param words: str[]
@return: int
Input: source = "bit", target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
Output: 5
explanation:
1 -> 1 -> 1 -> 1 -> 1
(source) bit -> but -> put -> pot -> pog -> dog (target)
has minimum of 5 transitions
"""
graph =
for i in range(-1, len(words)):
if i == -1:
current_word = source
else:
current_word = words[i]
graph[current_word] = []
for word in range(len(words)):
next_word = words[word]
if one_letter_difference(current_word, next_word):
graph[current_word].append(next_word)
#perform BFS
queue = collections.deque()
seen = set() # visited words
queue.append([source, 1])
seen.add(source)
while len(queue) > 0:
current, distance = queue.popleft()
if current == target: return distance
for neighbor in graph[current]:
if neighbor not in seen:
queue.append([neighbor, distance +1])
seen.add(neighbor)
return -1
source = "bit"
target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
test = shortestWordEditPath(source, target,words)
print(test)
python interview-questions
$endgroup$
add a comment |
$begingroup$
Find the Shortest Word Edit Path
I was given this problem from an interview.
#Given two words source and target, and a list of words words,
#find the length of the shortest series of edits that transforms source to target.
#Each edit must change exactly one letter at a time, and each
#intermediate word (and the final target word) must exist in words.
If the task is impossible, return -1.
Examples:
source = "bit", target = "dog" words = ["but", "put", "big", "pot",
"pog", "dog", "lot"]
output: 5 explanation: bit -> but -> put -> pot -> pog -> dog has 5
transitions. source = "no", target = "go" words = ["to"]
output: -1
def one_letter_difference(current_word, next_word):
count = 0
for i in range(len(current_word) -1):
if current_word[i] != next_word[i]:
count += 1;
if count == 1:
return True
else:
return False
def shortestWordEditPath(source, target, words):
"""
@param source: str
@param target: str
@param words: str[]
@return: int
Input: source = "bit", target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
Output: 5
explanation:
1 -> 1 -> 1 -> 1 -> 1
(source) bit -> but -> put -> pot -> pog -> dog (target)
has minimum of 5 transitions
"""
graph =
for i in range(-1, len(words)):
if i == -1:
current_word = source
else:
current_word = words[i]
graph[current_word] = []
for word in range(len(words)):
next_word = words[word]
if one_letter_difference(current_word, next_word):
graph[current_word].append(next_word)
#perform BFS
queue = collections.deque()
seen = set() # visited words
queue.append([source, 1])
seen.add(source)
while len(queue) > 0:
current, distance = queue.popleft()
if current == target: return distance
for neighbor in graph[current]:
if neighbor not in seen:
queue.append([neighbor, distance +1])
seen.add(neighbor)
return -1
source = "bit"
target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
test = shortestWordEditPath(source, target,words)
print(test)
python interview-questions
$endgroup$
Find the Shortest Word Edit Path
I was given this problem from an interview.
#Given two words source and target, and a list of words words,
#find the length of the shortest series of edits that transforms source to target.
#Each edit must change exactly one letter at a time, and each
#intermediate word (and the final target word) must exist in words.
If the task is impossible, return -1.
Examples:
source = "bit", target = "dog" words = ["but", "put", "big", "pot",
"pog", "dog", "lot"]
output: 5 explanation: bit -> but -> put -> pot -> pog -> dog has 5
transitions. source = "no", target = "go" words = ["to"]
output: -1
def one_letter_difference(current_word, next_word):
count = 0
for i in range(len(current_word) -1):
if current_word[i] != next_word[i]:
count += 1;
if count == 1:
return True
else:
return False
def shortestWordEditPath(source, target, words):
"""
@param source: str
@param target: str
@param words: str[]
@return: int
Input: source = "bit", target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
Output: 5
explanation:
1 -> 1 -> 1 -> 1 -> 1
(source) bit -> but -> put -> pot -> pog -> dog (target)
has minimum of 5 transitions
"""
graph =
for i in range(-1, len(words)):
if i == -1:
current_word = source
else:
current_word = words[i]
graph[current_word] = []
for word in range(len(words)):
next_word = words[word]
if one_letter_difference(current_word, next_word):
graph[current_word].append(next_word)
#perform BFS
queue = collections.deque()
seen = set() # visited words
queue.append([source, 1])
seen.add(source)
while len(queue) > 0:
current, distance = queue.popleft()
if current == target: return distance
for neighbor in graph[current]:
if neighbor not in seen:
queue.append([neighbor, distance +1])
seen.add(neighbor)
return -1
source = "bit"
target = "dog"
words = ["but", "put", "big", "pot", "pog", "dog", "lot"]
test = shortestWordEditPath(source, target,words)
print(test)
python interview-questions
python interview-questions
asked 2 mins ago
NinjaGNinjaG
833632
833632
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216209%2ffind-shortest-word-edit-path-in-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216209%2ffind-shortest-word-edit-path-in-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown