-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Create Longest_Substring_Without_Repeating_Characters.cpp #2761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 7 commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
8a09256
Create Longest_Substring_Without_Repeating_Characters.cpp
ashish5kmax 8985cab
Update and rename Longest_Substring_Without_Repeating_Characters.cpp …
ashish5kmax 91d2870
Update Longest_Substring_Without_Repeating_Characters.cpp
ashish5kmax 67328fa
Update Longest_Substring_Without_Repeating_Characters.cpp
ashish5kmax bbbff8a
Update Longest_Substring_Without_Repeating_Characters.cpp
ashish5kmax 70cc2e8
Merge branch 'master' into patch-2
ashish5kmax 39dbca3
Update and rename Longest_Substring_Without_Repeating_Characters.cpp …
ashish5kmax 77fd643
Update and rename Longest_Substring_Without_Repeating_Characters.cpp …
ashish5kmax e1bf9a0
Update longest_substring_without_repeating_characters.cpp
ashish5kmax db4768d
Update longest_substring_without_repeating_characters.cpp
ashish5kmax f819c2a
Merge branch 'master' into patch-2
ashish5kmax b988cb5
Update longest_substring_without_repeating_characters.cpp
ashish5kmax 754ab2f
Update longest_substring_without_repeating_characters.cpp
ashish5kmax fc22bc2
Merge branch 'master' into patch-2
ashish5kmax d82b3ff
Merge branch 'master' into patch-2
ashish5kmax b1291d4
Merge branch 'master' into patch-2
ashish5kmax 7a88f0b
Merge branch 'master' into patch-2
realstealthninja File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/** | ||
* 3.Longest_Substring_Without_Repeating_Characters | ||
* Problem link :- https://leetcode.com/problems/longest-substring-without-repeating-characters/description/ | ||
* Intiuation : | ||
Intuition is strightforward and simple, we track the frequencey and as we know we can't use string to track longest substring without repeating characters, as poping a char from front of string is not in O(1) which could be optimized by deque approch. | ||
* Approch : | ||
1) At first we initialize a unordered_map to track the frequncy and then. | ||
2) We initialize deque for pushing the characters and if temp > res we update our res deque to temp as we need longest substring here. | ||
3) And while loop is used to reduce the frequency from front doing i++ and removing charecters from temp deque as we no longer need them. | ||
4) return res.size() as we only need size not string. | ||
* Time Complexity : | ||
O(N) | ||
|
||
* Space Complexity : | ||
O(N) | ||
* Examples:- | ||
testcase1:- s = "abcabcbb", o/p = 3. | ||
testcase2:- s = "bbbbb", o/p = 1. | ||
testcase3:- s = "pwwkew", o/p = 3. | ||
* I hope this helps to understand. | ||
* Thank you!! | ||
**/ | ||
|
||
// ----------------- Header files ---------------------------------- | ||
#include <iostream> // for input and output read/write. | ||
#include <unordered_map> // to use it for character frequency. | ||
#include <deque> // for push and pop operations at O(1) time. | ||
#include <string> // for taking string as input | ||
|
||
using namespace std; // using the namspace standard to reduce the redundent usage of std:: when calling functions (basically reduicng an extra overhead). | ||
|
||
class Solution { | ||
public: | ||
int lengthOfLongestSubstring(string s) { | ||
// if size of string is 1 then it will be the answer. | ||
if(s.size()==1) return 1; | ||
|
||
// map used to store the characters frequency. | ||
unordered_map<char,int>m; | ||
int n = s.length(); | ||
|
||
// dequeue to remove from back if repeating charcters are present. | ||
deque<char>temp; | ||
deque<char>res; | ||
int i,j; | ||
for(i=0,j=0;i<n && j<n;) { | ||
m[s[j]]++; | ||
|
||
if(m[s[j]]>1) { | ||
if(temp.size()>res.size()) { | ||
res = temp; | ||
} | ||
|
||
while(m[s[j]]>1) { | ||
// as repeating charecter is present pop_front() is called. | ||
temp.pop_front(); | ||
m[s[i]]--; | ||
i++; | ||
} | ||
} | ||
|
||
temp.push_back(s[j]); | ||
j++; | ||
} | ||
|
||
if(temp.size()>res.size()) { | ||
res = temp; | ||
} | ||
|
||
return res.size(); | ||
} | ||
}; | ||
|
||
//-------------------- Main function ------------------------------- | ||
int main() { | ||
// object of class Solution created for function call. | ||
Solution soln; | ||
|
||
|
||
// user inputted string. | ||
string s; | ||
cout<<"Enter the string : "<<endl; | ||
cin>>s; | ||
|
||
// function call to get the ans of length of longest substring without repeating characters. | ||
cout<<soln.lengthOfLongestSubstring(s)<<endl; | ||
|
||
return 0; | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.