mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-08 03:45:23 +08:00
fix: added reverse string inplace (#1406)
Co-authored-by: madhuredra <madhuredra.tiwari@zemosolabs.com>
This commit is contained in:

committed by
GitHub

parent
36dcff8c5d
commit
0ca18c2b2c
@ -16,24 +16,17 @@ function ReverseStringIterative (string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JS disallows string mutation so we're actually a bit slower.
|
|
||||||
*
|
*
|
||||||
* @complexity O(n)
|
* @author dev-madhurendra
|
||||||
|
* Reverses a number by converting it to a string.
|
||||||
|
*
|
||||||
|
* @param {string} str - The number to reverse.
|
||||||
|
* @returns {string} The reversed number.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const reversed = reverseString("hello"); // Returns olleh
|
||||||
*/
|
*/
|
||||||
function ReverseStringIterativeInplace (string) {
|
|
||||||
if (typeof string !== 'string') {
|
|
||||||
throw new TypeError('The given value is not a string')
|
|
||||||
}
|
|
||||||
|
|
||||||
const _string = string.split('')
|
const ReverseStringIterativeInplace = (str) => [...str].reverse().join('')
|
||||||
|
|
||||||
for (let i = 0; i < Math.floor(_string.length / 2); i++) {
|
|
||||||
const first = _string[i]
|
|
||||||
_string[i] = _string[_string.length - 1 - i]
|
|
||||||
_string[_string.length - 1 - i] = first
|
|
||||||
}
|
|
||||||
|
|
||||||
return _string.join('')
|
|
||||||
}
|
|
||||||
|
|
||||||
export { ReverseStringIterative, ReverseStringIterativeInplace }
|
export { ReverseStringIterative, ReverseStringIterativeInplace }
|
||||||
|
@ -35,31 +35,10 @@ describe('ReverseStringIterative', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('ReverseStringIterativeInplace', () => {
|
describe('ReverseStringIterativeInplace', () => {
|
||||||
it('expects to reverse a simple string', () => {
|
it.each([
|
||||||
expect(ReverseStringIterativeInplace('reverse')).toEqual('esrever')
|
['hello', 'olleh'],
|
||||||
expect(ReverseStringIterativeInplace('some')).toEqual('emos')
|
['word', 'drow']
|
||||||
expect(ReverseStringIterativeInplace('string')).toEqual('gnirts')
|
])('reverse of %s is %s', (value, expected) => {
|
||||||
expect(ReverseStringIterativeInplace('The Algorithms Javascript')).toEqual('tpircsavaJ smhtiroglA ehT')
|
expect(ReverseStringIterativeInplace(value)).toBe(expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('expects to reverse a simple string without capitalizing the first letter', () => {
|
|
||||||
expect(ReverseStringIterativeInplace('Javascript')).toEqual('tpircsavaJ')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('expects to return an empty string given an empty string', () => {
|
|
||||||
expect(ReverseStringIterativeInplace('Javascript')).toEqual('tpircsavaJ')
|
|
||||||
})
|
|
||||||
|
|
||||||
it.each`
|
|
||||||
input
|
|
||||||
${123456}
|
|
||||||
${[1, 2, 3, 4, 5, 6]}
|
|
||||||
${{ test: 'test' }}
|
|
||||||
${null}
|
|
||||||
`(
|
|
||||||
'expects to throw a type error given a value that is $input',
|
|
||||||
({ input }) => {
|
|
||||||
expect(() => ReverseStringIterativeInplace(input)).toThrow('The given value is not a string')
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user