目录
第1题:翻转单词顺序
第2题:顺时针打印矩阵
第3题:总持续时间可被 60 整除的歌曲
第4题:字符串的最大公因子
第5题:上升下降字符串
第6题:将数组分成和相等的三个部分
第7题:可被 5 整除的二进制前缀
第8题:去除重复字母
第9题:重构字符串
第10题:三角形的最大周长
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:翻转单词顺序试题要求如下:
回答(C语言):
char* reverseWords(char* s){
// 去掉尾部的空格。最终至少留下一个空格,除非本身长度就为0
int n = strlen(s);
while(n > 0 && s[n-1] == ' ')
n--;
// 去掉头部的空格
int front = 0;
if(n > 0){
while(s[front] == ' ')
front++;
}
// 如果为空,返回
if( n - front == 0)
return "";
// 创建字符指针,长度大于等于实际长度
char *p = (char *)calloc(n + 1 - front, sizeof(char));
int index = 0; // 这是新字符串的下标
for( int i = n-1 , j = n-1; i >= front ; i--){
// 该写入单词了
if(i == front || (s[i] == ' ' && i != j) ){
int k = i + 1;
// 如果到头了,那头也应该写入
if(i == front)
k--;
for(; k
关注
打赏