力扣(LeetCode)刷题,简单题(第7期)

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

目录

第1题:剪绳子1

第2题:Excel表列序号

第3题:阶乘后的零

第4题:位1的个数

第5题:快乐数

第6题:颠倒二进制

第7题:字符串压缩

第8题:丑数

第9题:有效的字母异位词

第10题:各位相加


力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:剪绳子1

试题要求如下:

回答(C语言):


  
  1. int cuttingRope(int n){
  2. int num = 1;
  3. if(n == 2)
  4. return 1;
  5. if(n == 3)
  6. return 2;
  7. while(n > 4){
  8. n = n - 3;
  9. num = num * 3;
  10. }
  11. return num * n;
  12. }
  13. //解析:https://leetcode-cn.com/problems/integer-break/solution/343-zheng-shu-chai-fen-tan-xin-by-jyd/

运行效率如下所示:


第2题:Excel表列序号

试题要求如下:

回答(C语言):


  
  1. int titleToNumber(char * s){
  2. int i=0;
  3. long num=0;
  4. while(s[i]!='\0'){
  5. num=num*26+s[i]-'A'+1;
  6. i++;
  7. }
  8. return num;
  9. }

运行效率如下所示:


第3题:阶乘后的零

试题要求如下:

回答(C语言):


  
  1. int trailingZeroes(int n){
  2. int count = 0;
  3. while(n >= 5) {
  4. count += n / 5;
  5. n /= 5;
  6. }
  7. return count;
  8. }

运行效率如下所示:


第4题:位1的个数

试题要求如下:

回答(C语言):


  
  1. int hammingWeight(uint32_t n) {
  2. int cou=0;
  3. while(n){
  4. if(n%2==1){
  5. cou++;
  6. }
  7. n/=2;
  8. }
  9. return cou;
  10. }

运行效率如下所示:


第5题:快乐数

试题要求如下:

回答(C语言):


  
  1. bool isHappy(int n){
  2. while(1){
  3. if(n<10){
  4. if(n==1 || n==7)return true;
  5. else return false;
  6. }
  7. int sum=0;
  8. while(n!=0){
  9. sum=sum+(n%10)*(n%10);
  10. n=n/10;
  11. }
  12. n=sum;
  13. }
  14. }
  15. //在小于10的数中只由1和7是快乐数

运行效率如下所示:


第6题:颠倒二进制

试题要求如下:

回答(C语言):


  
  1. uint32_t reverseBits(uint32_t n) {
  2. uint32_t ans=0;
  3. int i=32;
  4. while(i--){
  5. ans<<=1;
  6. ans+=n&1;
  7. n>>=1;
  8. }
  9. return ans;
  10. }

运行效率如下所示:


第7题:字符串压缩

试题要求如下:

回答(C语言):


  
  1. char* compressString(char* S){
  2. int size = strlen(S);
  3. if (size <= 2) return S;
  4. char* str = (char*)malloc(sizeof(char) * (2 * size));
  5. str[0] = S[0];
  6. int count = 1, index = 1;
  7. for (int i = 1; i < size + 1; i++) {
  8. if (S[i] == S[i - 1]) {
  9. count++;
  10. }
  11. else {
  12. int num = (int)log10(count) + index;
  13. index = num;
  14. while (count) {
  15. str[num--] = count % 10 +'0';
  16. count /= 10;
  17. }
  18. str[++index] = S[i];
  19. count = 1;
  20. ++index;
  21. }
  22. }
  23. if (index >= size + 1) return S;
  24. return str;
  25. }

运行效率如下所示:


第8题:丑数

试题要求如下:

回答(C语言):


  
  1. bool isUgly(int num){
  2. if(num==0)
  3. return 0;
  4. while(num%2==0)
  5. num=num/2;
  6. while(num%3==0)
  7. num=num/3;
  8. while(num%5==0)
  9. num=num/5;
  10. return num==1;
  11. }

运行效率如下所示:


第9题:有效的字母异位词

试题要求如下:

回答(C语言):

解题思路:先判断两字符串长度是否相等,若不相等则false,若相等则将两字符串中每种字母的个数做差,若结果为0则true,不为0则false。


  
  1. bool isAnagram(char * s, char * t){
  2. int n=strlen(s),m=strlen(t);
  3. if(n!=m)
  4. return false;
  5. int a[26]={0};
  6. for(int i=0;i<n;i++){
  7. a[s[i]-'a']++;
  8. a[t[i]-'a']--;
  9. }
  10. for(int i=0;i<26;i++)
  11. if(a[i]!=0)
  12. return false;
  13. return true;
  14. }

运行效率如下所示:


第10题:各位相加

试题要求如下:

回答(C语言):


  
  1. int addDigits(int num){
  2. int res=0;
  3. while(num>=10){
  4. while(num){
  5. res=res+num%10;
  6. num/=10;
  7. }
  8. num=res;
  9. res=0;
  10. }
  11. return num;
  12. }

运行效率如下所示:

文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:handsome-man.blog.csdn.net/article/details/104828296

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。