Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio1.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Modulo6/resolvendo-problemas/Exercicio1.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 84 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio1.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
console.log("Exercicio1 funcionando");

/*
Considere que a gente só possa fazer três operações com string: adicionar um caractere ao final dele,
remover um caractere do final dele ou substituir um caractere por outro.
Dizemos que uma string é 'one edit' de outra se ela for o resultado da original a partir de UMA SÓ dessas operações.
Escreva um método que determine se uma string é 'one edit' de outra.
*/



//add one character to the end of the original
//remove charcter from the end
//check if last character has changed

/*

`"banan"` é 'one edit' de `"banana"` (remoção de um caracter)

`"bananak"` é 'one edit' de `"banana"` (adição de um caracter)

`"panana"` é 'one edit' de `"banana"` (troca de um caracter)

`"bananaaa"` **não** é 'one edit' de `"banana"` (adição de dois caracteres)

*/

function isOneEdit(originalString:string, editedString:string):boolean {

let isOneEdit:boolean = true;

if(originalString.length - editedString.length === 1)
{
//last character removed
//banan a
//banan

//check if remaining characters are equal
for( let i = 0; i < editedString.length; i++ )
{
if (originalString[i] !== editedString[i]) isOneEdit = false;
}

return isOneEdit;
}

else if(editedString.length - originalString.length === 1)
{
//added one character at the end
//banana
//bananaa

//check if remaining characters are equal
for( let i =0; i < originalString.length; i++)
{
if(originalString[i] !== editedString[i]) isOneEdit = false;
}
return isOneEdit;
}

else if (editedString.length === originalString.length){
//check for changed characters
let changedCharacters = 0;

for(let i =0; i< originalString.length; i++)
{
if(originalString[i] !== editedString[i]) changedCharacters++;
}

return changedCharacters === 1;
}

else{
return false;
}


}


console.log(isOneEdit("banana", "banan"));
console.log(isOneEdit("banana", "bananak"));
console.log(isOneEdit("banana", "panana"));
console.log(isOneEdit("banana", "bananaaa"));
30 changes: 30 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio2.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Modulo6/resolvendo-problemas/Exercicio2.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 56 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio2.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

/*
Para o input `aabbb` o resultado deve ser `a2b3`

Para o input `aabcccccaaa` o resultado deve ser `a2b1c5a3`

Para o input `accurate` o resultado deve ser `accurate` (já que inicialmente o código retornaria `a1c2u1r1a1t1e1` que possui o tamanho maior do que `accurate`)

Para o input `escola` o resultado deve ser `escola` (já que inicialmente o código retornaria `e1s1c1o1l1a1` que possui o tamanho maior do que `escola`)

Para o input `accuraaaaaaaaaate`, o resultado deve ser `a1c2u1r1a10t1e1`
*/


function stringCompression(originalString:string):string {

let compressedString:string = "";
originalString = originalString.toLowerCase();
let previousChar:string = originalString[0];
let charRepetitions:number = 0;

for(let char of originalString)
{

if (previousChar === char)
{
charRepetitions++;
}

else {

compressedString = compressedString + `${previousChar}${charRepetitions}`;
previousChar = char;
charRepetitions =1;
}
}

compressedString = compressedString + `${previousChar}${charRepetitions}`;


if (compressedString.length > originalString.length)
{
return originalString
}

else {
return compressedString;
}

}

console.log(stringCompression("aabbb"));
console.log(stringCompression("aabccccaaa"));
console.log(stringCompression("accurate"));
console.log(stringCompression("escola"));
console.log(stringCompression("accuraaaaaaaaaate"))
2 changes: 2 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio3.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Modulo6/resolvendo-problemas/Exercicio3.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
2 changes: 2 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio4.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Modulo6/resolvendo-problemas/Exercicio4.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
2 changes: 2 additions & 0 deletions Modulo6/resolvendo-problemas/Exercicio5.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Modulo6/resolvendo-problemas/Exercicio5.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file.
17 changes: 17 additions & 0 deletions Modulo6/resolvendo-problemas/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "resolvendo-problemas",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"Exercicio1": "tsc && node ./Exercicio1.js",
"Exercicio2": "tsc && node ./Exercicio2.js",
"Exercicio3": "tsc && node ./Exercicio3.js",
"Exercicio4": "tsc && node ./Exercicio4.js",
"Exercicio5": "tsc && node ./Exercicio5.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
Loading