第90场周赛
时间:2022-07-28
本文章向大家介绍第90场周赛,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
859. 亲密字符串
题解:根据描述,找出A与B字符不同的位置,如果没有这样的位置,那么需要在A中找到重复的字符即可判断是亲密的。如果有这样的位置,那么在这样的位置有两个情况,判断这两处位置交换后是否一样。如果这样的位置个数不是2个,肯定不是亲密字符串。
bool buddyStrings(string A, string B)
{
if(A.size()!=B.size()) return false;
vector<int>diff;
for(int i=0;i<A.size();i++)
{
if(A[i]!=B[i]) diff.push_back(i);
}
if(diff.size()==0){
//说明ab一样,那么则需要在a中找到重复的字符
map<char,int>m;
for(int i=0;i<A.size();i++)
{
m[A[i]]++;
if(m[A[i]]>1) return true;
}
return false;
}
else if(diff.size()==2)
{
return ((A[diff[0]])==(B[diff[1]]))&&(A[diff[1]]==B[diff[0]]);
}
return false;
}
856. 括号的分数
题解:不知道怎么描述。把每次计算的分数,顺带把由哪个位置括号计算的到的一起压入。
int scoreOfParentheses(string S) {
int ret = 0;
stack<int>brackets;
stack<pair<int,int>>scores;//前一个int存socre,后一个int存下标
for(int i=0;i<S.size();i++){
if(S[i]=='(') {
brackets.push(i);
}
else {
if(i-brackets.top()==1) {
scores.push(make_pair(1,brackets.top()));
brackets.pop();
}
else{
int tmp = 0;
int d = brackets.top();
while(!scores.empty()&&scores.top().second>d)
{
tmp+=scores.top().first;
scores.pop();
}
scores.push(make_pair(2*tmp,d));
brackets.pop();
}
}
}
while(!scores.empty()){
ret+=scores.top().first;
scores.pop();
}
return ret;
}
858. 镜面反射
题解:
- 模拟法:光线的运动可以分解为x方向运动,y方向运动。 X方向的运动,光线在正方形的左右边界不断跳转,y方向的运动,一开始不断向上前进q哥单位,达到上边界后,反射,之后向下前进q个单位,在达到下边界,变为向上前进q个单位。 int mirrorReflection(int p, int q) { vector<int> position = {0,0};//起始位置,左下角 vector<vector<int>> catchers = {{p,0},{p,p},{0,p}}; //探测器坐标 int directx = 1,directy = 1;//方向向量 while(true) { position[0] += directx*p;//x方向变动p个单位 directx *= -1;//每次反射,光线X轴方向变反 position[1] += directy*q;//y方向变动q个单位 if(position[1] > p) {//计算y方向变动后,被上边界反射后实际坐标 position[1] = p-(position[1]%p); directy *= -1; //注意方向,变反 } if(position[1] < 0) {//计算y方向变动后,被上边界反射后实际坐标 position[1] = -position[1]; directy *= -1; //方向 } for(int i=0;i<catchers.size();++i) if(position == catchers[i]) return i; //检测是否到达探测器 } return 0; }
857. 雇佣 K 名工人的最低成本
- Hold安全公司公布俄罗斯大型泄密事件细节
- 走近科学:如何搞定各种各样的终端机
- android 打造不同的Seekbar
- 最简单最常用的LinearLayout线性布局
- 漏洞科普:你对弱口令重视吗?
- 自定义View简单使用
- 正确姿势:如何调戏蹭网者
- 当我们讨论流畅度的时候,我们究竟在说什么?
- ImageButton和ZoomButton使用大全
- Android 插件化突破应用市场无法上广告的问题
- ImageView的属性和方法大全
- sharedpreferences如何保存对象
- Android:全面解析熟悉而陌生 的 Application 类使用
- ToggleButton和Switch使用大全
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法