Skip to content

Instantly share code, notes, and snippets.

@khaled0fares
Created September 18, 2016 14:46
Show Gist options
  • Save khaled0fares/f514a3223964fb83607f40a73d2bb3e6 to your computer and use it in GitHub Desktop.
Save khaled0fares/f514a3223964fb83607f40a73d2bb3e6 to your computer and use it in GitHub Desktop.
Set data structure
class Set{
constructor(){
this.data = new Array();
}
_exist(ele){
return this.data.indexOf(ele) >= 0
}
add(ele){
if(!this._exist(ele)) this.data.push(ele);
}
remove(ele){
if(this._exist(ele)) this.data.splice(this.data.indexOf(ele) ,1);
}
size(){
let sum = 0;
for(let key in this.data) sum += 1
return sum
}
union(otherSet){
let i = 0, currentLen = this.data.length, otherLen = otherSet.data.length, newSet = new Set();
for(i; i< currentLen; i++) newSet.data[i] = this.data[i];
for(i = 0; i < otherLen; i++) newSet.add(otherSet.data[i]);
return newSet;
}
intersect(otherSet){
let i = 0, currentLen = this.data.length, newSet = new Set();
for(i; i < currentLen; i++){
let ele = this.data[i];
if(otherSet._exist(ele)){
newSet.add(ele);
}
}
return newSet;
}
difference(otherSet){
let i = 0, currentLen = this.data.length, newSet = new Set();
for(i; i < currentLen; i++){
let ele = this.data[i];
if(!otherSet._exist(ele)){
newSet.add(ele);
}
}
return newSet;
}
subSet(otherSet){
if(this.size() > otherSet.size()) return false;
let i = 0, currentLen = this.size();
for(i; i < currentLen; i++){
let ele = this.data[i];
if(!otherSet._exist(ele)) return false;
}
return true;
}
display(){
return `{${this.data.join(", ")}}`;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment