当前位置: 首页 > news >正文

免费网站正能量app应用大全系统优化软件哪个好

免费网站正能量app应用大全,系统优化软件哪个好,有设计感的网页设计,那个啥的网站推荐下链接: https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/ 题意: 给定字符串s1,s2,仅由x,y组成 每次可以在两边各挑一个字符交换 求让s1等于s2的最小步骤 解: 1000啊1000,双指针贪一下就过了 …

链接:

https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/

题意:

给定字符串s1,s2,仅由x,y组成

每次可以在两边各挑一个字符交换

求让s1等于s2的最小步骤

解:

1000啊1000,双指针贪一下就过了

优先选择xx组合yy,只需要一步,然后处理xy和yx

然后发现好像太敷衍了,又想了想

在预先处理掉不需要考虑的位置(原来就相同的位置)情况下

可以发现,剩下的如果是偶数位,一定可以换完,因为任意两位一定含有2x2y,因为s1[i]!=s2[i]

所以判断一下新字符串长度,得出是否为-1

然后算一下每位上xy和yx的数量,因为花费一步可以解决两个xy或者两个yx,花费两步就是解决一个xy+yx,优先做费用一步的操作,数量为xy/2+yx/2

然后做费用两步的操作,由于总数为偶数,所以用xy%2*2,如果有剩余的xy就一定会有对应的yx

ans为xy/2+yx/2+xy%2*2

实际代码:

贪:

#include<iostream>
using namespace std;
int solve(string s1, string s2)
{int ans=0;int lg1=s1.length(),lg2=-1;string t1,t2;for(int i=0;i<lg1;i++){if(s1[i]!=s2[i]){t1+=s1[i];t2+=s2[i];}}lg2=t1.length();//处理掉不需要处理的位置 //cout<<t1<<" and "<<t2<<endl;for(int i=0;i<lg2;i++){if(t1[i]=='-' || t2[i]=='-') continue;for(int j=i+1;j<lg2;j++){if(t1[j]=='-' || t2[j]=='-') continue;string temp1,temp2;temp1=temp1+t1[i]+t1[j];temp2=temp2+t2[i]+t2[j];cout<<temp1<<" "<<temp2<<endl;if((temp1=="xx" && temp2=="yy")||(temp1=="yy" && temp2=="xx")){ans+=1;t1[i]=t1[j]=t2[i]=t2[j]='-';}}}//步骤一 处理所有一步的移动 //cout<<"step1 done!"<<endl;//cout<<t1<<" "<<t2<<endl;for(int i=0;i<lg2;i++){if(t1[i]=='-' || t2[i]=='-') continue;for(int j=i+1;j<lg2;j++){if(t1[j]=='-' || t2[j]=='-') continue;string temp1,temp2;temp1=temp1+t1[i]+t1[j];temp2=temp2+t2[i]+t2[j];cout<<temp1<<" "<<temp2<<endl;if((temp1=="xy" && temp2=="yx")||(temp1=="yx" && temp2=="xy")){ans+=2;t1[i]=t1[j]=t2[i]=t2[j]='-';}}}//步骤二 处理所有两步的移动 //cout<<"step2 done!"<<endl;//cout<<t1<<" "<<t2<<endl;for(int i=0;i<lg2;i++){if(t1[i]!='-'||t2[i]!='-'){ans=-1;break;}}//步骤三 检查是否全部处理完毕 //cout<<"step3 done!"<<endl;return ans;
}
int main()
{string s1,s2;cin>>s1>>s2;int ans=solve(s1,s2);cout<<ans<<endl;
}

改:

#include<iostream>
using namespace std;
int solve(string s1, string s2)
{int ans=0;int lg1=s1.length(),lg2=-1;string t1,t2;for(int i=0;i<lg1;i++){if(s1[i]!=s2[i]){t1+=s1[i];t2+=s2[i];}}lg2=t1.length();//处理掉不需要处理的位置 //cout<<t1<<" and "<<t2<<endl;int xy=0,yx=0;for(int i=0;i<lg2;i++){if(t1[i]=='x' && t2[i]=='y'){xy++;}else yx++;}//已知去除了不需要处理的位置//任意两位上都是2x2y不会出现处理不了的问题//判断是否是奇数位需要处理,即会剩下一个xy//if((xy+yx)%2==1) return -1;//奇数位?奇数位! if(lg2%2==1) return -1;return xy/2+yx/2+xy%2*2;
}
int main()
{string s1,s2;cin>>s1>>s2;int ans=solve(s1,s2);cout<<ans<<endl;
}

限制:

  • 1 <= s1.length, s2.length <= 1000
  • s1, s2 只包含 'x''y'
http://www.yayakq.cn/news/961363/

相关文章:

  • 成都市建设局官方网站河北省建设厅报名网站
  • 梅州网站优化网站建设技术课程设计报告
  • 湖南长大建设集团股份有限公司网站软文形式推广产品
  • 广州自助网站制作福州seo扣费
  • 三亚网站建设公司html个人网页制作源代码
  • 青岛市城阳区建设局网站网站首页布局设计教程
  • 网站后台制作表格网站开发公对公转账合同模板
  • 手机的网站建设目标是什么源代码下载
  • 简阳网站建设简阳制作网站工具
  • 公司网站制作公东莞常平邮编
  • 企业网站建设运营的灵魂学ui设计培训学校
  • 做ppt的兼职网站有哪些如何做网站关键词收录
  • 一个网站绑定两个域名高端网站建设网站定制
  • 做企业网站注意事项购物链接
  • 成都企业门户网站建设wordpress站群的作用
  • 一流的网站建设案例网页游戏排行榜 511
  • 资讯网站的好处在哪注册域名
  • 成都网站建设科技公司做推广哪个平台网站好
  • 海阳网站制作网站建设需要哪些成本费用
  • 点击网络网站网站建设整体设计思路
  • 装修网站建设网站的方案
  • 免费自做网站网站建设功能文案
  • 中国中建设计集团有限公司网站医院网站建设的要求
  • 国内做彩票网站违法么网站的ftp怎么查
  • 高埗网站仿做广州seo优化公司
  • 有哪些网站可以做ppt网站如何做视频链接
  • 可视化网站开发系统介绍想找个人建网站
  • 甘肃省住房与城乡建设厅网站首页远程wordpress数据库
  • 旅游网站如何做推广无备案网站广告如何做
  • 在线服装设计网站成华区微信网站建