您当前的位置: 首页 >  leetcode

不脱发的程序猿

暂无认证

  • 1浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

力扣(LeetCode)刷题,简单+中等题(第28期)

不脱发的程序猿 发布时间:2020-11-30 18:49:52 ,浏览量:1

目录

第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             
关注
打赏
1664101891
查看更多评论
0.0391s