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 小时前
第1章,了解乌班图环境,使用浏览器和邮箱
c语言·汇编·ubuntu
Escalating_xu2 小时前
【C 语言】操作符详解(下):逗号、下标、结构体、类型转换与表达式求值
c语言
晓蛋4 小时前
C语言条件编译精讲
c语言·条件编译·宏定义·代码移植·预处理程序
ggaofeng5 小时前
Ctrl+C结束进程是如何实现的
服务器·c语言·网络
水饺编程5 小时前
第1章:开发环境搭建,在 Windows 中安装 QEMU
c语言·汇编
沐晓时光6 小时前
C语言入门,深入理解指针(1)
c语言·开发语言
天l志7 小时前
DL/T 645—2007《多功能电能表通信协议》的跨平台 C 语言实现
c语言·电表·dlt645
0+1117 小时前
算法 --模拟
c++·算法·leetcode
Nil2088 小时前
leetcode 739每日温度
算法·leetcode·职场和发展
老王爱玩车9 小时前
工具函数——清空输入缓冲区
c语言·开发语言·学习