C语言 | Leetcode C语言题解之第151题反转字符串中的单词

题目:

题解:

cpp 复制代码
void myResverse(char* s,int start,int end){
    while(start<end){
        char temp = s[start];
        s[start] = s[end];
        s[end] = temp;
        start++;
        end--;
    }
}
char* reverseWords(char* s) {
    int start = 0;
    int end = strlen(s)-1;
    myResverse(s,start,end);
    if(s[0]==' '){
        int i = 0;
        while(s[i]==' '){
            i++;
        }
        int j = 0;
        while(s[i]!='\0'){
            s[j] = s[i];
            i++;
            j++;
        }
        s[j] = '\0';
    }
    int check = 0;
    while(s[check]!='\0'){
        check++;
    }
    if(s[check-1]==' '){
        int o = check - 1;
        while(s[o]==' '){
            o--;
        }
        s[o+1] = '\0';
    }
    for(int k = 0;k<strlen(s);k++){
        if(s[k]==' '&&s[k+1]==' '){
            int i = k;
        while(s[i]==' '){
            i++;
        }
        int j = k+1;
        while(s[i]!='\0'){
            s[j] = s[i];
            i++;
            j++;
        }
        s[j] = '\0';
        }
    }
    int slow = 0;
    for(int u = 0;u<=strlen(s);u++){
        if(s[u]==' '||s[u]=='\0'){
            myResverse(s,slow,u-1);
            slow = u+1;
        }
    }
    return s;
}
相关推荐
Canmag 兴隆磁性21 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
_Narcissus_1 天前
排序算法总结表格
c语言·数据结构·c++·笔记·算法·排序算法·总结
小雪崩1 天前
嵌入式学习 day27:标准IO
linux·c语言·学习
从琳开始9891 天前
优选算法——双指针(算法原理+力扣题)
算法·leetcode·职场和发展
从琳开始9891 天前
优选算法——滑动窗口(概念+解题模板+LeetCode例题讲解)
算法·leetcode·职场和发展
Nil2081 天前
leetcode 94二叉树的中序遍历
算法·leetcode·职场和发展
xx~t1 天前
嵌入式——Linux软件编程2
linux·运维·服务器·c语言·学习方法
圣保罗的大教堂1 天前
leetcode 1386. 安排电影院座位 中等
leetcode
圣保罗的大教堂1 天前
leetcode 3069. 将元素分配到两个数组中 I 简单
leetcode
Nil2081 天前
leetcode 146LRU缓存
算法·leetcode·缓存