前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >摩拜 [编程题] 字符串问题

摩拜 [编程题] 字符串问题

作者头像
week
发布2018-12-07 17:43:47
2900
发布2018-12-07 17:43:47
举报
文章被收录于专栏:用户画像用户画像

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1370029

小摩手里有一个字符串A,小拜的手里有一个字符串B,B的长度大于等于A,所以小摩想把A串变得和B串一样长,这样小拜就愿意和小摩一起玩了。

而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,小拜就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。

小摩可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问小摩对A串添加完字符之后,不相等的位数最少有多少位?

输入描述:

第一行 为字符串A,第二行 为字符串B,
A的长度小于等于B的长度,B的长度小于等于100。
字符均为小写字母。

输出描述:

输出一行整数表示A串添加完字符之后,A B 不相等的位数最少有多少位?

输入例子1:

abe
cabc

输出例子1:

1
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        char first=a.charAt(0);
        char end=a.charAt(a.length()-1);
        int a_len=a.length();
        int b_len=b.length();
        if(a_len==b_len){
            int cnt=0;
            for(int i=0;i<a_len;i++) {
                char ch_a = a.charAt(i);
                char ch_b = b.charAt(i);
                if(ch_a!=ch_b){
                    cnt++;
                }
            }
            System.out.println(cnt);
        }else {
            int i,j,k;
            for(i=0;i<b_len;i++){
                char ch = b.charAt(i);
                if(first==ch){
                    break;
                }
            }
            for(j=0,k=i;j<a_len&&k<b_len;j++,k++){
                char ch_a = a.charAt(j);
                char ch_b = b.charAt(k);
                if(ch_a!=ch_b){
                    break;
                }
            }
            int dis_head=a_len-j;

            for(i=b_len-1;i>0;i--){
                char ch = b.charAt(i);
                if(end==ch){
                    break;
                }
            }
            int dis_end;
            if((b_len-i+1+a_len)>b_len){
                dis_end=a_len;
            }else {
                for(j=a_len-1,k=i;j>0&&k>0;j--,k--){
                    char ch_a = a.charAt(j);
                    char ch_b = b.charAt(k);
                    if(ch_a!=ch_b){
                        break;
                    }
                }
                dis_end=j;
            }

            int min=0;
            if(dis_head>dis_end){
                min=dis_end;
            }else{
                min=dis_head;
            }
            System.out.println(min);
        }
        in.close();
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档