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; }