0
点赞
收藏
分享

微信扫一扫

牛客网 HJ12 字符串反转

五殳师兄 2022-03-12 阅读 31
c语言
#include <stdio.h>
#include <assert.h>
#include <string.h>

void MyReserve(char* p)
{
    assert(p);
    int len = strlen(p);
    char* left = p;
    char* right  = p+len-1;
    while(left < right)
    {
        char ret = *left;
        *left = *right;
        *right = ret;
        left++;
        right--;
    }
}

int main()
{
    char arr[1001] = {0};
    scanf("%s",arr);
    MyReserve(arr);
    printf("%s\n",arr);
    return 0;
}

image-20220312200830349

#include <stdio.h>
#include <assert.h>
#include <string.h>

void MyReserve(char* p,int len)
{
    assert(p);
    char* left = p;
    char* right = p + len - 1;
    while (left < right)
    {
        char ret = *left;
        *left = *right;
        *right = ret;
        left++;
        right--;
    }
}
void func(char* p)
{
    assert(p);
    int j = 0;
    int len = strlen(p);
    for (int i = 0; i < len+1; i++)
    {
        if (p[i] == ' '|| p[i]=='\0')
        { 
            MyReserve(p + j, i-j);
            j = i+1;
        }
    }

    MyReserve(p, len);
}

int main()
{
	char arr[1001] = { 0 };
    //char* arr = "I am a boy";
	int ch = 0;
	int j = 0;
	while ((ch = getchar()) != '\n')
	{
		arr[j++] = ch;
	}
	func(arr);
	printf("%s\n", arr);
	return 0;
}

image-20220312203554367

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    int count = 0;
    while (n)
    {
        count++;
        n = n & (n - 1);  //n & (n-1)  会把二进制数列中最右边的1去掉
    }
    printf("%d", count);
    return 0;
}

image-20220312204944191

举报

相关推荐

0 条评论