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;
}
相关推荐
有一个好名字1 分钟前
力扣-奇偶链表
算法·leetcode·链表
wxm6312 分钟前
力扣算法题(C++):1、2
java·算法·leetcode
im_AMBER9 分钟前
Leetcode 103 反转链表 II
数据结构·c++·笔记·学习·算法·leetcode
iYun在学C9 分钟前
驱动程序(创建设备节点实验)
linux·c语言·嵌入式硬件
sycmancia1 小时前
C语言学习02—位运算
c语言
666HZ6661 小时前
数据结构2.1 线性表习题
c语言·数据结构·算法
iAkuya1 小时前
(leetcode)力扣100 40二叉树的直径(迭代递归)
java·算法·leetcode
smile_5me1 小时前
RK3588 csm400b调试记录
c语言·开发语言
修炼室1 小时前
在 Windows 上构建不占 C 盘的科研级 WSL 实验环境(Ubuntu 22.04)
c语言·windows·ubuntu
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——leetCode 103 题:二叉树的锯齿形层序遍历
算法·leetcode·结构与算法