Dada uma string de entrada s, inverta a ordem das palavras. Uma palavra é definida como uma sequência de caracteres sem espaço. As palavras em s serão separadas por pelo menos um espaço. Retorna uma sequência de palavras em ordem inversa concatenada por um único espaço.
Observe que s pode conter espaços iniciais ou finais ou vários espaços entre duas palavras. A string retornada deve ter apenas um espaço separando as palavras. Não inclua espaços extras.
Para resolver este problema, precisamos:
function reverseWordsBruteForce(s: string): string { // Split the string by spaces and filter out empty strings let words = s.trim().split(/\s /); // Reverse the array of words words.reverse(); // Join the words with a single space return words.join(' '); }
Esta solução é eficiente dadas as restrições. No entanto, ele usa espaço adicional para a matriz de palavras.
Se o tipo de dados string for mutável e precisarmos resolvê-lo no local com espaço extra O(1), podemos usar uma técnica de dois ponteiros para reverter as palavras dentro da string original.
function reverseWordsOptimized(s: string): string { // Trim the string and convert it to an array of characters let chars = s.trim().split(''); // Helper function to reverse a portion of the array in place function reverse(arr: string[], left: number, right: number) { while (leftAnálise de complexidade de tempo:
console.log(reverseWordsBruteForce("the sky is blue")); // "blue is sky the" console.log(reverseWordsBruteForce(" hello world ")); // "world hello" console.log(reverseWordsBruteForce("a good example")); // "example good a" console.log(reverseWordsBruteForce("singleWord")); // "singleWord" console.log(reverseWordsBruteForce(" ")); // "" console.log(reverseWordsOptimized("the sky is blue")); // "blue is sky the" console.log(reverseWordsOptimized(" hello world ")); // "world hello" console.log(reverseWordsOptimized("a good example")); // "example good a" console.log(reverseWordsOptimized("singleWord")); // "singleWord" console.log(reverseWordsOptimized(" ")); // ""
Manipulação de strings:
Técnica de dois ponteiros:
Algoritmos no local:
Ao praticar esses problemas e estratégias, você pode melhorar suas habilidades de resolução de problemas e estar mais bem preparado para vários desafios de codificação.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3