【C语言】LeetCode: 16.15. 珠玑妙算 485. 最大连续 1 的个数 HJ31.单词倒排

1. 16.15. 珠玑妙算

16.15. 珠玑妙算
分析:先找猜中,有即将solution和guess都置为0,再找伪猜中,同样找到即置为0.

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* masterMind(char* solution, char* guess, int* returnSize){
    int count_ture=0;
    int count_fake=0;
    for(int i=0;i<4;i++)
    {
        if(solution[i]==guess[i])
        {
            count_ture++;
            solution[i]='0';
            guess[i]='0';
        }
    }
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(guess[i]==solution[j] && guess[i]!='0')
            {
                count_fake++;
                solution[j]='0';
                guess[i]='0';
            }
        }
    }
    int* ret=malloc(sizeof(int)*2);
    *returnSize=2;
    ret[0]=count_ture;
    ret[1]=count_fake;
    return ret;
}

2. 485. 最大连续 1 的个数

485. 最大连续 1 的个数
分析:计算连续出现1的次数,遇见0将计数器置为0,并保留次数的最大值。

int findMaxConsecutiveOnes(int* nums, int numsSize){
    int count=0;
    int max=0;
    for(int i=0;i<numsSize;i++)
    {
        if(nums[i]==1)
        {
            count++;
        }
        else
        {
            max=fmax(max,count);
            count=0;
        }
    }
    max=fmax(max,count);
    return max;
}

3. HJ31 单词倒排

HJ31 单词倒排

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void swap(char* left, char* right)
{
    while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
int main() {
    char arr[10000] = { 0 };
    gets(arr);
    swap(arr, arr + strlen(arr) - 1);
    char* cur = arr;
    while (*cur != '\0')
    {
        char* right = cur;
        while ((*right <= 'z' && *right >= 'a') || (*right <= 'Z' && *right >= 'A'))
        {
            right++;
        }
        swap(cur, right - 1);
        if (*right != '\0')
        {
            *right = ' ';
            cur = right + 1;
        }
        else
        {
            cur = right;
        }

    }
    printf("%s\n", arr);
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值