360笔试:技术综合G卷
360 笔试:
代码题目
DNA 匹配问题
就过了45%,不知道哪里出错了
#include <iostream>
#include<string>
using namespace std;
int findA(string s){
int num=0;
int len=s.length();
for(int i=0;i<len;i++){
if(s[i]=='A')num++;
}
return num;
}
int findT(string s){
int num=0;
int len=s.length();
for(int i=0;i<len;i++){
if(s[i]=='T')num++;
}
return num;
}
int f(string s1,string s2){
int lens1=s1.length();
int lens2=s2.length();
if(lens1!=lens2)return 0;
int lens1_A=findA(s1);
int lens1_T=findT(s1);
int lens2_A=findA(s2);
int lens2_T=findT(s2);
int num=0;
//
if(lens1_A>lens2_A){
int tem=lens1_A-lens2_A;
for(int i=0;i<lens1;i++){
if(tem==0)break;
if(s1[i]=='A'){
s1[i]='T';
tem--;
num++;
}
}
}else if(lens1_T>lens2_T){
int tem1=lens1_T-lens2_T;
for(int i=0;i<lens2;i++){
if(tem1==0)break;
if(s1[i]=='T'){
s1[i]='A';
tem1--;
num++;
}
}
}
for(int i=0;i<lens1;i++){
if(s1[i]==s2[i])continue;
else{
//
if(s2[i]=='A'){
int index1=i+1;
while(index1<lens1){
if(s1[index1]=='A'){
char c=s1[index1];
s1[index1]=s1[i];
s1[i]=c;
num++;
break;
}else{
index1++;
}
}
}
//
if(s2[i]=='T'){
int index2=i+1;
while(index2<lens1){
if(s1[index2]=='T'){
char c=s1[index2];
s1[index2]=s1[i];
s1[i]=c;
num++;
break;
}else{
index2++;
}
}
}
}
}
return num;
}
int main()
{
string s1,s2;
cin>>s1>>s2;
cout<<f(s1,s2);
return 0;
}
曼迪匹艾公司福利 121人发布