力扣(LeetCode)刷题,简单题(第7期)
【摘要】 目录
第1题:剪绳子1
第2题:Excel表列序号
第3题:阶乘后的零
第4题:位1的个数
第5题:快乐数
第6题:颠倒二进制
第7题:字符串压缩
第8题:丑数
第9题:有效的字母异位词
第10题:各位相加
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:剪绳子1
试题...
目录
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:剪绳子1
试题要求如下:

回答(C语言):
-
int cuttingRope(int n){
-
int num = 1;
-
-
if(n == 2)
-
return 1;
-
if(n == 3)
-
return 2;
-
-
while(n > 4){
-
n = n - 3;
-
num = num * 3;
-
}
-
return num * n;
-
}
-
-
//解析:https://leetcode-cn.com/problems/integer-break/solution/343-zheng-shu-chai-fen-tan-xin-by-jyd/
运行效率如下所示:

第2题:Excel表列序号
试题要求如下:

回答(C语言):
-
int titleToNumber(char * s){
-
int i=0;
-
long num=0;
-
-
while(s[i]!='\0'){
-
num=num*26+s[i]-'A'+1;
-
i++;
-
}
-
-
return num;
-
}
运行效率如下所示:

第3题:阶乘后的零
试题要求如下:

回答(C语言):
-
int trailingZeroes(int n){
-
int count = 0;
-
-
while(n >= 5) {
-
count += n / 5;
-
n /= 5;
-
}
-
-
return count;
-
}
运行效率如下所示:

第4题:位1的个数
试题要求如下:

回答(C语言):
-
int hammingWeight(uint32_t n) {
-
int cou=0;
-
-
while(n){
-
if(n%2==1){
-
cou++;
-
}
-
-
n/=2;
-
}
-
return cou;
-
}
运行效率如下所示:

第5题:快乐数
试题要求如下:

回答(C语言):
-
bool isHappy(int n){
-
while(1){
-
if(n<10){
-
if(n==1 || n==7)return true;
-
else return false;
-
}
-
-
int sum=0;
-
-
while(n!=0){
-
sum=sum+(n%10)*(n%10);
-
n=n/10;
-
}
-
n=sum;
-
}
-
}
-
-
//在小于10的数中只由1和7是快乐数
运行效率如下所示:

第6题:颠倒二进制
试题要求如下:

回答(C语言):
-
uint32_t reverseBits(uint32_t n) {
-
uint32_t ans=0;
-
int i=32;
-
-
while(i--){
-
ans<<=1;
-
ans+=n&1;
-
n>>=1;
-
}
-
-
return ans;
-
}
运行效率如下所示:

第7题:字符串压缩
试题要求如下:

回答(C语言):
-
char* compressString(char* S){
-
int size = strlen(S);
-
if (size <= 2) return S;
-
char* str = (char*)malloc(sizeof(char) * (2 * size));
-
str[0] = S[0];
-
int count = 1, index = 1;
-
-
for (int i = 1; i < size + 1; i++) {
-
if (S[i] == S[i - 1]) {
-
count++;
-
}
-
else {
-
int num = (int)log10(count) + index;
-
index = num;
-
while (count) {
-
str[num--] = count % 10 +'0';
-
count /= 10;
-
}
-
str[++index] = S[i];
-
count = 1;
-
++index;
-
}
-
}
-
-
if (index >= size + 1) return S;
-
return str;
-
}
运行效率如下所示:

第8题:丑数
试题要求如下:

回答(C语言):
-
bool isUgly(int num){
-
if(num==0)
-
return 0;
-
-
while(num%2==0)
-
num=num/2;
-
while(num%3==0)
-
num=num/3;
-
while(num%5==0)
-
num=num/5;
-
-
return num==1;
-
}
运行效率如下所示:

第9题:有效的字母异位词
试题要求如下:

回答(C语言):
解题思路:先判断两字符串长度是否相等,若不相等则false,若相等则将两字符串中每种字母的个数做差,若结果为0则true,不为0则false。
-
bool isAnagram(char * s, char * t){
-
int n=strlen(s),m=strlen(t);
-
-
if(n!=m)
-
return false;
-
-
int a[26]={0};
-
-
for(int i=0;i<n;i++){
-
a[s[i]-'a']++;
-
a[t[i]-'a']--;
-
}
-
for(int i=0;i<26;i++)
-
if(a[i]!=0)
-
return false;
-
-
return true;
-
}
运行效率如下所示:

第10题:各位相加
试题要求如下:

回答(C语言):
-
int addDigits(int num){
-
int res=0;
-
-
while(num>=10){
-
while(num){
-
res=res+num%10;
-
num/=10;
-
}
-
-
num=res;
-
res=0;
-
}
-
-
return num;
-
}
运行效率如下所示:

文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:handsome-man.blog.csdn.net/article/details/104828296
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)