java配对碱基链,DNA合成

8

#include

#include

using namespace std;

int main(){

string a, b;

cin >> a >> b;

int len = a.length();

int count = 0;

for (int i = 0; i < len; i++)

if ((a[i] == 'A' && b[i] == 'T') || (a[i] == 'T' && b[i] == 'A') || (a[i] == 'C' && b[i] == 'G') || (a[i] == 'G' && b[i] == 'C'))

count++;

cout << len - count;

return 0;

}

发表于 2017-03-09 18:37:43

回复(1)

3

发表于 2017-03-20 16:21:46

回复(2)

2

/*

思路:

使用ASCII码相减判断两两字符是否匹配

abs('A'-'T') = 19

abs('C'-'G') = 4;

*/

#include

#include

#include

using namespace std;

int main() {

string a,b;

char cha,chb;

int count = 0;

cin >> a >> b;

for(int i=0; i

cha = a[i];

chb = b[i];

if(abs(cha-chb)==19 || abs(cha-chb)==4) continue;

else {

count++;

}

}

cout << count << endl;

return 0;

}

发表于 2017-03-23 22:33:24

回复(0)

3

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String s1 = sc.next();

String s2 = sc.next();

if (s1 == null || s2 == null ||

s1.length() != s2.length() ||

s1.isEmpty() || s2.isEmpty()) {

return;

}

int count = 0;

for (int i = 0; i < s1.length(); i ++) {

if (s1.charAt(i) == 'A' && s2.charAt(i) == 'T') continue;

if (s1.charAt(i) == 'T' && s2.charAt(i) == 'A') continue;

if (s1.charAt(i) == 'C' && s2.charAt(i) == 'G') continue;

if (s1.charAt(i) == 'G' && s2.charAt(i) == 'C') continue;

count ++;

}

System.out.println(count);

}

}

先判断输入的字符串是否为空,长度是否相等。然后注意比较即可。

发表于 2017-03-12 13:03:41

回复(0)

3

public class Main {

public static void main(String args[]){

Scanner sc = new Scanner(System.in);

while(sc.hasNext()){

String str1 = sc.next();

String str2 = sc.next();

int a = 'T'+'A';

int b = 'C'+'G';

int count=0;

if(str1.length()==str2.length())

for(int i=0;i

int c = str1.charAt(i)+str2.charAt(i);

if(a!=c && b!=c)count++;

}

System.out.print(count);

}

}

}

发表于 2017-03-09 15:41:28

回复(2)

1

include

#include

#include

std::map dna;

using namespace std;

int main() {

dna['T']='A';

dna['A']='T';

dna['C']='G';

dna['G']='C';

char s1[50];

int i=0,j=0,count=0;

gets(s1);

while(s1[j-1]!=' ') j++;

while(s1[i]!=' '){

if(dna[s1[i]]!=s1[j]){

count++;

}

i++;

j++;

}

cout<

return 0;

}

发表于 2020-02-16 11:04:31

回复(0)

0

对位之和不为0

input_ = input().split(' ')

chain1 = list(input_[0])

chain2 = list(input_[1])

pattern = {'A':2, 'T':-2, 'G':1, 'C':-1}

chain1 = [pattern[x] for x in chain1]

chain2 = [pattern[x] for x in chain2]

result = list(map(lambda x,y: x+y, chain1, chain2))

print(len(result) - result.count(0))

发表于 2020-04-08 15:36:06

回复(0)

0

import java.util.*;

public class Main3{

public static void main(String[] args){

Scanner in = new Scanner(System.in);

String DNAL = in.next();

String DNAR = in.next();

int count1 = 0;

for(int i=0; i

if(!match(DNAL.charAt(i), DNAR.charAt(i))){

count1++;

}

}

//        int count2 = 0;

//        for(int i=0; i

//            if(!match(DNAL.charAt(i), DNAR.charAt(DNAR.length()-1-i))){

//                count2++;

//            }

//        }

//        if(count1>count2){

//            System.out.println(count2);

//        }

//        else{

System.out.println(count1);

//        }

}

public static boolean match(char A, char B){

if(A=='A'){

if(B=='T'){

return true;

}

}

else if(A=='T'){

if(B=='A'){

return true;

}

}

else if(A=='G'){

if(B=='C'){

return true;

}

}

else if(A=='C'){

if(B=='G'){

return true;

}

}

return false;

}

} 按道理来说,这个DNA序列可以翻转的吧,,为什么题目没有说这种情况呢?

发表于 2020-04-03 05:11:28

回复(0)

0

const isPair = (couple) => {

return(/[AT{2}/.test(couple) || /[GC]{2}/.test(couple))

}

const Mix = (dna1, dna2) => {

var times = 0;

for(let i = 0; i 

if(isPair(dna1[i] + dna2[i])){

continue;

}

['A', 'G', 'T', 'C'].forEach(e=>{

if(!isPair(e + dna2[i]))times++

})

}

return times

}

console.log(Mix('ACGT', 'TGCA'))

发表于 2020-03-19 17:48:09

回复(0)

0

s1 = input()

s2 = input()

c = lambda a, b: sum(map(lambda x: 0 if set(x) in ({'T', 'A'}, {'G', 'C'}) else 1, zip(a, b)))

print(c(s1, s2))

编辑于 2020-02-20 21:13:38

回复(1)

0

one, two = input().split()

lenth = len(one)

dic={'A':'T', 'T':'A', 'C':'G', 'G':'C'}

iter = 0

for i in range(lenth):

if dic[one[i]] != two[i]:

iter = iter + 1

print(iter)

编辑于 2019-09-29 16:14:04

回复(0)

0

#include

#include

#include

#include

using namespace std;

int main() { char s1[51];

char s2[51];

scanf("%s %s", s1, s2);

int count = 0;

for (int i = 0; s1[i] != '\0'; ++i) {

if (s1[i] == 'A' && s2[i] == 'T' ||

s1[i] == 'T' && s2[i] == 'A' ||

s1[i] == 'G' && s2[i] == 'C' ||

s1[i] == 'C' && s2[i] == 'G') {

continue;

}

else {

++count;

}

}

printf("%d", count);

return 0;

}

发表于 2019-05-03 10:36:46

回复(0)

0

list1,list2=input().split()

count=0

S=set(["AT","CG","TA","GC"])

for i in range(len(list1)):

if str(list1[i])+str(list2[i]) not in S:

count+=1

print(count)

发表于 2018-08-08 20:35:14

回复(0)

0

a, b = input().strip().split(' ')

count = 0

for i in range(len(a)):

s = a[i] + b[i]

if s not in ['AT', 'TA', 'CG', 'GC']:

count += 1

print(count)

发表于 2018-04-23 12:54:23

回复(0)

0

// Swift 4.0

let line = readLine()! let list = line.split(separator: " ")

let a = list[0]

let b = list[1]

var count = 0

for index in a.indices {

let v = (String(a[index]) + String(b[b.index(index, offsetBy: a.count+1)]))

if !["AT", "TA", "GC", "CG"].contains(v) {

count += 1

}

}

print(count)

发表于 2018-03-07 19:34:51

回复(0)

0

# 逐项配对比较,若配对不成功操作次数就加一

DNAs = input('输入两个长度相同的DNA链用空格分隔')

base,change = DNAs.split(' ')

total_length = len(base)

base = list(base)

change = list(change)

count = 0fori inrange(total_length): ifbase[i]+change[i] not in['AT','CG','TA','GC']:

count += 1else: continueprint('RESULT',count)

编辑于 2018-02-26 02:57:09

回复(0)

0

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Main{

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

String string = scanner.next();

String string2 = scanner.next();

int length1 = string.length();

int length2 = string2.length();

int count = 0;

if(length1 != length2 || length1 < 1 || length2 < 1){

return;

}

else {

for(int i = 0;i < length1;i++){

if((string.charAt(i) == 'A' && string2.charAt(i) == 'T')

|| (string.charAt(i) == 'T' && string2.charAt(i) == 'A')

|| (string.charAt(i) == 'C' && string2.charAt(i) == 'G')

|| (string.charAt(i) == 'G' && string2.charAt(i) == 'C')){

count++;

}

}

}

System.out.println(length1 - count);

}

}

发表于 2017-12-17 17:13:28

回复(0)

0

import java.util.Scanner;

/**

* @author LiuFei

* @create 2017-12-08 15:49

*/

public class Main {

public static void main(String[] args) {

int count = 0; // 计数器

// 获取数据

Scanner scanner = new Scanner(System.in);

String str1 = scanner.next();

String str2 = scanner.next();

for (int i = 0; i < str1.length(); i++) {

if (getCorrChar(str1.charAt(i)) != str2.charAt(i)) {

count++;

}

}

System.out.println(count);

}

/**

* 返回与某碱基互补的碱基

*

* @param x 某碱基

* @return 互补碱基

*/

public static char getCorrChar(char x) {

char y = ' ';

switch (x) {

case 'A': {

y = 'T';

break;

}

case 'T': {

y = 'A';

break;

}

case 'C': {

y = 'G';

break;

}

case 'G': {

y = 'C';

break;

}

}

return y;

}

}

编辑于 2017-12-08 17:10:23

回复(1)

0

#include

#include

using namespace std;

int main(int argc, const char * argv[]) {

string a,b;

int i,count=0;

cin>>a>>b;

for(i=0;i

if((a[i]=='A' && b[i]=='T')||(a[i]=='T' && b[i]=='A')||(a[i]=='C' && b[i]=='G')||(a[i]=='G' && b[i]=='C'))

count++;

}

cout<

return 0;

}

发表于 2017-11-06 17:56:30

回复(0)

0

#include

using namespace std;

bool matchDNA(char ch1, char ch2) {

if (ch1 == 'C') {

}

bool isMatch1 = ch1 == 'C' && ch2 == 'G';

bool isMatch2 = ch1 == 'G' && ch2 == 'C';

bool isMatch3 = ch1 == 'A' && ch2 == 'T';

bool isMatch4 = ch1 == 'T' && ch2 == 'A';

if (isMatch1 || isMatch2 || isMatch3 || isMatch4) {

return true;

} else {

return false;

}

}

int main(int argc, const char * argv[]) {

char a[50], b[50];

cin>>a>>b;

int i = 0;

int sum = 0;

while (a[i]) {

if (!matchDNA(a[i], b[i])) {

sum++;

}

i++;

}

cout<

return 0;

}

发表于 2017-10-18 12:50:21

回复(0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值