美团笔试 字符串合并

输入两个字符串a和b,合并成一个串c,属于a或b的字符在c中顺序保持不变。如"ACG"和"UT"可以被组合成"AUCTG"或"ACUGT"等。
我们定义字符串c的价值如下:令n为字符串c的长度,分界线k(1<=k<=n-1)将c分为两个子串u=c[1…k],v=c[k+1…n]。u、v中字符的任意排列,使得u、v的最长公共前缀最大,这就是分界线k的价值,而所有分界线k价值最大的一个为字符串c的价值。
比如,字符串c=ACGTTTGCAT的价值为5,因为将该串分成两半得到u=ACGTT,V=TGCAT,重新排列后可以使得u=v,即最长公共前缀为5。
你需要求出所有可能的c中价值最大的字符串,输出这个最大价值即可。
示例1
输入
2
ACGT
ACGT
AACCGGTT
ACACAGAT
输出
4
7

求各位大神看一下哪里出错了,牛客网AC为0

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String[] a=new String[n];
        String[] b=new String[n];
        for(int i=0;i<n;i++) {
            a[i]=sc.next();
            b[i]=sc.next();
        }
         
        for(int i=0;i<n;i++) {
             
            char[] s=(a[i]+b[i]).toCharArray();
            int[] count=new int[4];
            for(int j=0;j<s.length;j++) {
                if(s[j]=='A') {count[0]++;}
                if(s[j]=='C') {count[1]++;}
                if(s[j]=='G') {count[2]++;}
                if(s[j]=='T') {count[3]++;}
            }
            System.out.println(count[0]/2+count[1]/2+count[2]/2+count[3]/2);
        }  
        }
     
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值