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;
}
相关推荐
Tisfy22 分钟前
LeetCode 3217.从链表中移除在数组中存在的节点:哈希表(一次遍历)
leetcode·链表·散列表
小白菜又菜35 分钟前
Leetcode 495. Teemo Attacking
算法·leetcode·职场和发展
京井42 分钟前
二叉树最小深度解题思路
c语言
奔跑吧邓邓子2 小时前
【C语言实战(65)】C语言实战:筑牢防线,攻克缓冲区溢出难题
c语言·开发实战·缓冲区溢出·缓冲区溢出防护
杨福瑞2 小时前
数据结构:单链表(1)
c语言·开发语言·数据结构
Yupureki2 小时前
从零开始的C++学习生活 17:异常和智能指针
c语言·数据结构·c++·学习·visual studio
.柒宇.6 小时前
力扣hot100----15.三数之和(java版)
java·数据结构·算法·leetcode
deng-c-f9 小时前
配置(4):VScode c/c++编译环境的配置:c_cpp_properties.json
c语言·c++·vscode
程序员阿鹏10 小时前
56.合并区间
java·数据结构·算法·leetcode
散峰而望13 小时前
基本魔法语言数组 (一) (C语言)
c语言·开发语言·编辑器·github·visual studio code·visual studio