[编程题]最小唯一前缀

给定一组个字符串,为每个字符串找出能够唯一识别该字符串的最小前缀。

输入描述:

第一行输入一个整数 n 表示字符串个数 后面n行,每行一个字符串,一共n串互不相同的字符串。(2 <= n <=
100,字符串长度不超过100)

输出描述:

输出n行,每行一个字符串,依次是每个字符串的最小可唯一识别前缀

链接:https://www.nowcoder.com/questionTerminal/ebcf8391390543bfbdd018af60d0c218?answerType=1&f=discussion
来源:牛客网

示例1
输入

5
meituanapp
meituanwaimai
dianpingliren
dianpingjiehun
mt

输出

meituana
meituanw
dianpingl
dianpingj
mt

备注:

如果一个字符串S是另一个字符串T的前缀,则S的最小可识别前缀为S;

import java.util.Scanner;  

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        String[] strings = new String[N];
        for (int i = 0; i < N; i++)
            strings[i] = scanner.next();
        scanner.close();
        for (String s : strings)
            System.out.println(unique(s, strings));
    }
    //返回字符串s在字符串数组strings中最短唯一前缀
    private static String unique(String s, String[] strings) {
        String prefix = s.substring(0, 1);//前缀初始为首字符
        for (String single : strings) {
            if (single.equals(s))//跳过字符串s本身
                continue;
            while (single.indexOf(prefix) == 0 && prefix.length() < s.length()) //字符串single与字符串s具有相同的前缀prefix,前缀需要往后延长
                prefix = s.substring(0, prefix.length()+1);
        }
        return prefix;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值