【牛客网】--- 今年的第几天 && 字符串长度最大乘积

引言:计算天数这类题其实就是一个纸老虎,看着好像挺麻烦的,其实分三步走,理清思路,接下来撸代码就完了,看见他,就要把它想成送分题(2019秋招快手&&蘑菇街真题)。

一、今年第几天
在这里插入图片描述
解题思路:

  • 1.先安排一个判断素年、闰年函数。
  • 2.再安排一个对照月份总天数的数组。
  • 3.总天数=对应月数总天数-(月份天数-所给的day)+(是闰年则加一天)

例如:
输入: 2008 8 23
总天数=243-(31-23)+1=236

代码如下:

#include<iostream>
#include<stdlib.h>
using namespace std;

bool IsLeapyear(int year)
{
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
	{
		return true;
	}
	return false;
}

int GetyearDay(int year, int month, int day)
{
	int Montsumhday[13] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
	int Monthday[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int sumday = 0;

	sumday += Montsumhday[month];
	sumday = sumday - (Monthday[month] - day);
	if (IsLeapyear(year))
	{
		sumday += 1;
	}
	return sumday;
}

int main()
{
	int year, month, day;
	cin >> year >> month >> day;
	cout << GetyearDay(year, month, day);
	system("pause");
	return 0;
}

运行结果如下:
在这里插入图片描述
二、字符串长度最大积
在这里插入图片描述
解题思路①
暴力求解,不断遍历字符串数组,两两判断是否含有重复字符,不含有则求长度乘积,动态求出最大乘积。

解题思路②:
将每个字符串映射为一个整数
映射规则为:
a-z分别对应整数二进制位的0-25位,若字符串包含某一个字符则对应位置为1然后两两比较整数,若两个整数的0-25位没有相同位都为1,说明这两个字符串符合条件,计算乘积。

代码如下:

#include<iostream>
#include<string>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;

bool Isgoodstr(string s1, string s2)
{
	for (int i = 0; i<s1.size(); ++i)
	{
		for (int j = 0; j<s2.size(); ++j)
		{
			if (s1[i] == s2[j])
			{
				return false;
				break;
			}
		}
	}
	return true;
}

int main()
{
	string s;
	vector<string> vs;
	getline(cin, s);
	for (int i = 0; i<s.size(); ++i)
	{
		if (s[i] == '"')
		{
			string word = "";
			i++;
			while (s[i] != '"')
			{
				word += s[i];
				i++;
			}
			vs.push_back(word);
		}

	}

	int Max = 0;
	for (int i = 0; i<vs.size(); ++i)
	{
		for (int j = i; j<vs.size(); ++j)
		{
			if (Isgoodstr(vs[i], vs[j]))
			{
				int res = vs[i].size()*vs[j].size();
				Max = max(Max, res);
			}

		}
	}
	cout << Max << endl;
	return 0;
}

运行结果如下:
在这里插入图片描述

原创文章 73 获赞 361 访问量 6万+

猜你喜欢

转载自blog.csdn.net/L19002S/article/details/105481468
今日推荐