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

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxq0816/article/details/83904964

小摩手里有一个字符串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();
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏烂笔头

Python标准库笔记(4) — collections模块

目录[-] 这个模块提供几个非常有用的Python容器类型 1.容器 名称 功能描述 OrderedDict 保持了key插入顺序的di...

3587
来自专栏mathor

2017百度之星初赛(A):今夕何夕

992
来自专栏从零开始学 Web 前端

从零开始学 Web 之 JavaScript(四)数组

arguements 是伪数组:不能修改长短的数组。(可以修改元素,但是不能变长变短)

902
来自专栏程序员互动联盟

【答疑解惑】Java中的方法重载

语音版: 我定义了一个类如下: public class FirstJava { private int value; private int...

39110
来自专栏hbbliyong

python 函数参数的传递(参数带星号的说明)

python中函数参数的传递是通过赋值来传递的。函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个...

3708
来自专栏机器学习算法与Python学习

Python基础语法(2)

一、控制流 1. if 语句 i = 10 n = int(raw_input("enter a number:")) if n == i: pri...

51313
来自专栏Java爬坑系列

【JAVA零基础入门系列】Day7 Java输入与输出

  本篇主要介绍Java的输入与输出,当然,这里说的是控制台下的输入与输出,窗口程序的设计将会再后续篇章中有详细说明。     Java的输出很简单,调用Sys...

2289
来自专栏我和未来有约会

Js中的变量

Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用...

2716
来自专栏Crossin的编程教室

【Python 第68课】函数的参数传递(2)

接着上一次的内容,来介绍一种更加灵活的参数传递方式: def func(*args) 这种方式的厉害之处在于,它可以接受任意数量的参数。来看具体例子: def...

2696
来自专栏个人随笔

房上的猫:变量.数据类型与运算符

一.变量:  定义   变量是存储数据的一个基本单位,不同的变量相互独立  java常用数据类型   int 整数类形 long长整形 short短整型    ...

35914

扫码关注云+社区

领取腾讯云代金券