Загрузка страницы

How To Permute A String - Generate All Permutations Of A String

Free 5-Day Mini-Course: https://backtobackswe.com
Try Our Full Platform: https://backtobackswe.com/pricing
📹 Intuitive Video Explanations
🏃 Run Code As You Learn
💾 Save Progress
❓New Unseen Questions
🔎 Get All Solutions

Question: Given a string, print all permutations of the string and return an array of them. No duplicates are allowed.

Whenever we work with problems like this, the fact that it is a string and that it is an array are interchangeable. We will permute an array the same way that we permute a string.

Why is this a backtracking problem? Because we are placing an item and then exploring all possibilities from there.

Whenever we have a problem that says "generate" or "compute" and it is an expression of several decision points that comprise a larger possibility set...WE HAVE BACKTRACKING.
The 3 Keys To Backtracking

Our Choice

What character we place in a "slot"

Our Constraints

None really...but at each decision point we will have fewer characters to work with because of our previous decisions.

Our Goal

Let n be the string length. Place n characters.
Complexities

Time: O(n * n!)

- There are n! permutations and it takes O(n) time to add each one to our result array

Space: O(n)
- We are not returning an array here so linear space because our recursion will go at maximum n elements deep since we make n choices of placement at maximum

- If we did store and return an array our space complexity would be O(n * n!) since we would have n! permutations and each permutation would be of length n. If we consider the returned array of all permutation strings as NOT part of space, the call stack dominates space. We are back to O(n).
++++++++++++++++++++++++++++++++++++++++++++++++++

HackerRank: https://www.youtube.com/channel/UCOf7UPMHBjAavgD0Qw5q5ww

Tuschar Roy: https://www.youtube.com/user/tusharroy2525

GeeksForGeeks: https://www.youtube.com/channel/UC0RhatS1pyxInC00YKjjBqQ

Jarvis Johnson: https://www.youtube.com/user/VSympathyV

Success In Tech: https://www.youtube.com/channel/UC-vYrOAmtrx9sBzJAf3x_xw

++++++++++++++++++++++++++++++++++++++++++++++++++

This question is number 16.3 in the fantastic book "Elements of Programming Interviews" by Adnan Aziz

Видео How To Permute A String - Generate All Permutations Of A String канала Back To Back SWE
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
29 декабря 2018 г. 6:20:29
00:28:37
Другие видео канала
Professor Clyde Kruskal On Kruskal's AlgorithmProfessor Clyde Kruskal On Kruskal's AlgorithmLinked Lists Explained | DSA Concept for BeginnersLinked Lists Explained | DSA Concept for BeginnersDeeply Understanding Logarithms In Time Complexities & Their Role In Computer ScienceDeeply Understanding Logarithms In Time Complexities & Their Role In Computer ScienceFind The Second Largest Item - Heap & Tracking Approach (Beginner Big N Interview Question)Find The Second Largest Item - Heap & Tracking Approach (Beginner Big N Interview Question)Sort A K Sorted Array - Investigating Applications of Min/Max HeapsSort A K Sorted Array - Investigating Applications of Min/Max HeapsA Detailed Algorithmic Analysis of Insertion Sort. Best Case & Worst Case.A Detailed Algorithmic Analysis of Insertion Sort. Best Case & Worst Case.Build A Min Height BST From A Sorted Array | Coding Interview QuestionBuild A Min Height BST From A Sorted Array | Coding Interview QuestionImplement A Queue Using Stacks - The Queue ADT ("Implement Queue Using Stacks" on LeetCode)Implement A Queue Using Stacks - The Queue ADT ("Implement Queue Using Stacks" on LeetCode)Important Coding Interview Concept | 3 Keys to Backtracking #shorts #datastructuresImportant Coding Interview Concept | 3 Keys to Backtracking #shorts #datastructuresWhy Is Merge Sort O(n * log(n))? The Really Really Long Answer.Why Is Merge Sort O(n * log(n))? The Really Really Long Answer.Introducing Asymptotic NotationsIntroducing Asymptotic NotationsWhat Is Asymptotic Analysis? And Why Does It Matter? A Deeper Understanding of Asymptotic Notation.What Is Asymptotic Analysis? And Why Does It Matter? A Deeper Understanding of Asymptotic Notation.Implement A Max Stack - A Stack With A .max() API (Similar To "Min Stack" on LeetCode)Implement A Max Stack - A Stack With A .max() API (Similar To "Min Stack" on LeetCode)Gaurav Sen: Talking Daily Life At Uber & System Design Wisdom (The Back To Back Show - Show 1)Gaurav Sen: Talking Daily Life At Uber & System Design Wisdom (The Back To Back Show - Show 1)Asymptotic Notations 101: Big O, Big Omega, & Theta (Asymptotic Analysis Bootcamp)Asymptotic Notations 101: Big O, Big Omega, & Theta (Asymptotic Analysis Bootcamp)Longest Common Subsequence (2 Strings) - Dynamic Programming & Competing SubproblemsLongest Common Subsequence (2 Strings) - Dynamic Programming & Competing SubproblemsSearch A 2D Sorted Matrix - Fundamentals of Search Space ReductionSearch A 2D Sorted Matrix - Fundamentals of Search Space ReductionDijkstra's Algorithm vs Prim's AlgorithmDijkstra's Algorithm vs Prim's AlgorithmBinary Tree Bootcamp: Full, Complete, & Perfect Trees. Preorder, Inorder, & Postorder Traversal.Binary Tree Bootcamp: Full, Complete, & Perfect Trees. Preorder, Inorder, & Postorder Traversal.Implement A Binary Heap - An Efficient Implementation of The Priority Queue ADT (Abstract Data Type)Implement A Binary Heap - An Efficient Implementation of The Priority Queue ADT (Abstract Data Type)What is Hashing? | Hashtables Explained #datastructures #hashtableWhat is Hashing? | Hashtables Explained #datastructures #hashtable
Яндекс.Метрика