力扣(LeetCode)刷题,简单题(第7期)
生活随笔
收集整理的這篇文章主要介紹了
力扣(LeetCode)刷题,简单题(第7期)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
第1題:剪繩子1
第2題:Excel表列序號
第3題:階乘后的零
第4題:位1的個數
第5題:快樂數
第6題:顛倒二進制
第7題:字符串壓縮
第8題:丑數
第9題:有效的字母異位詞
第10題:各位相加
力扣(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;
}
運行效率如下所示:
總結
以上是生活随笔為你收集整理的力扣(LeetCode)刷题,简单题(第7期)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力扣(LeetCode)刷题,简单题(第
- 下一篇: 2020阿里全球数学大赛:3万名高手、4