题一:字符串倒置
示例1
输入
I like beijing.
输出
beijing. like I
思路一:
定义字符串数组arr[ ] ,利用gets()将要倒置的字符串输入,记录字符串长度len ,此时写一个逆置函数Inversion() ,第一步将整个字符串逆置 ,然后再定义开始节点指针start() ,和走动节点指针cur() ,第二步:循环每次逆置一个单词,最后打印字符串。
cpp
#include <stdio.h>
//字符串逆置
void Inversion(char* left, char* right) {
while (left < right)
{
char* tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
//初始化
char arr[100] = { 0 };
gets(arr);
int len = strlen(arr);
char* cur = arr;
char* start = arr;
Inversion(arr, arr + len - 1);
//循环判断到结束
while (*cur != '\0')
{
//每次逆置一个单词
while (*cur != ' ' && *cur != '\0')
{
cur++;
}
Inversion(start, cur - 1);
start = cur + 1;
if (*cur == ' ')
cur++;
}
printf("%s", arr);
return 0;
}
题二:最小公倍数
示例1
输入
6 4
输出
12
思路一:
如下图: 明确思路(由于题目有时间复杂度,要求在牛客中此解法才通过,正常暴力解发时间复杂度超过题目限制)。
cpp
#include <stdio.h>
int main()
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
{
int i = 1;
while (i)
{
if ((a * i % b) == 0)
{
printf("%d", a * i);
break;
}
i++;
}
}
return 0;
}