Given a signed 32-bit integer `x`, return `x` with its digits reversed. If reversing `x` causes the value to go outside the signed 32-bit integer range `[-2^31, 2^31 - 1]`, return `0`.
**Assume the environment does not allow you to store 64-bit integers (signed or unsigned).**