数据结构字符串Leetcode实战Day5
1、反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例 1:
输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:
输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]
这里我使用的是简单的反转即可。
class Solution {
public void reverseString(char[] s) {
int length = s.length;
char temp;
for (int i = 0; i < length/2; i++) {
temp = s[i];
s[i] = s[length-1-i];
s[length-1-i] = temp;
}
}
}
看上去很简单,就是使用一个temp
来作为寄存器即可。
2、数字溢出
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
解题思路:
class Solution {
public int reverse(int x) {
int temp = 0;
while (x != 0) {
int t = x % 10;
int newtemp = temp * 10 + t;
//如果数字溢出,直接返回0
if ((newtemp - t) / 10 != temp)
return 0;
temp = newtemp;
x = x / 10;
}
return temp;
}
}
这次的数据还不错:
执行结果:通过
显示详情
执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:35.4 MB, 在所有 Java 提交中击败了70.18%的用户
通过测试用例:1032 / 1032
感谢大家阅读,明天我会继续努力学习算法。