专栏首页用户画像摩拜 [编程题] 字符串问题

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

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 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 条评论
登录 后参与评论

相关文章

  • 剑指offer 二叉搜索树的后序遍历序列

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    week
  • 剑指offer 顺时针打印矩阵

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 1...

    week
  • SpringMVC token 防止表单重复提交

    week
  • c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)

    原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html

    徐飞机
  • 数据结构:栈

    栈(Stack)又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线性表操作的子集,它是操作受限的线性表,因此,可称为...

    灰子学技术
  • 其实我们可以少写点 if else 和 switch

    内容来源:作者—— 潇湘待雨,链接:https://www.cnblogs.com/pqjwyn/p/10247336.html,好文请多支持!感谢您的阅读~

    IT大咖说
  • 其实我们可以少写点if else和switch

    不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起...

    好好学java
  • 其实我们可以少写点if else和switch

    不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起...

    java架构师
  • paramiko——一个专门为Linux设计的模块

    paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,下面我们就来看看如何去使用paramiko模块吧。

    我被狗咬了
  • LeetCode 594. 最长和谐子序列(map)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-harmonious-subseque...

    Michael阿明

扫码关注云+社区

领取腾讯云代金券