3.整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:输入:x = -123
输出:-321
示例 3:输入:x = 120
输出:21
示例 4:输入:x = 0
输出:0
代码:
class Solution {
public:
int reverse(int x) {
int res=0;
while(x!=0){
if (res > INT_MAX / 10 || res < INT_MIN / 10) return 0;
res=res*10+x%10;
x=x/10;
}
return res;
}
};
没啥可说的,有点数学基础的都看的懂。还有一种思路就是转换成字符串在反转,不过没有尝试过。
4.字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
提示:你可以假定该字符串只包含小写字母。
代码:
class Solution {
public:
int firstUniqChar(string s) {
int count[26]={0};
for(int i=0;i<s.length();i++){
count[s[i]-'a']++;
}
for(int i=0;i<s.length();i++){
if(count[s[i]-'a']==1)
{
return i;
}
}
return -1;
}
};
在字符串只包含小写字母的前提下,代码实现很容易,思路:先遍历字符串统计每个字符出现的次数,在遍历字符串查看当前字符如果出现次数为1返回。如果字符串不仅仅是小写字符,可以用hashmap来实现,思路也是一致的。