【每日一题】OR62

目录

  • 前言:简单题
  • 题目展示
  • 题目分析
    • 方法一
    • 方法二

前言:简单题

题目展示:

字符逆序

【每日一题】OR62_第1张图片
这个题目跟我今天要讲的题很类似,可以说是一摸一样的体型,而本体中则是让我们将所有的字符逆序,这则很简单。

#include 
#include 
 
 
void reverse(char* left, char* right)
{
    assert(left && right);
    while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
 
 
 
 
int main()
{
    char arr[101] = { 0 };
    
    gets(arr);
   
    int len = strlen(arr);
    
    reverse(arr, arr + len - 1);
    printf("%s", arr);
}

通过找到数组中的最后一位和第一位进行交换。

题目展示

题目如下:

OR62倒置字符串

题目分析

【每日一题】OR62_第2张图片
【每日一题】OR62_第3张图片
这两个题进行对比发现
我们可以在第一道题的基础上,再进行了一次逆序。

方法一

方法一相当简单,我们会用代码一的代码进行继续编写。
【每日一题】OR62_第4张图片
通过用逆序每个单词的方式写出代码

#include
#include
void Rev(char*left,char*right)
{
	assert(right && left);
	while (left > right)
	{
		int bmp = *left;
		*left = *right;
		*right = bmp;
		left++;
		right--;

}
}
int main()
{
	char arr[101] = { 0 };
	gets(arr);//获取arr字符
	int len = strlen(arr);
	//整体逆序
	Rev(arr, arr + len - 1);
	//个别单词逆序

	char* cur = arr;
	while (*cur)
	{
		char* start = cur;
		while (*cur != ' '&&cur!='\0')
		{
			cur++;
		}
		Rev(start, cur - 1);
		if (*cur == ' ')
		{
			cur++;
		}
	}
	printf("%s\n", arr);

}

通过先逆序两次字符串的方式,写出代码。
注意:'\0’和‘ ’需要考虑到位,否则会越位访问。

方法二

投机的方法

#include
void reverse() {
	char *arr[101];
	if (scanf("%s",arr)!= EOF) {
		reverse();
		printf("%s ", arr);
	}
}
int main() {
	reverse();
	return 0;
}

通过用递归的方式写出代码。

你可能感兴趣的:(c语言,算法)