3182-2020-3-3-java

找首位相同的最短字串

看作是找收尾相同的最短子串
这怕不是一个二维dp吧
设dp[i][j]表示以i字符开始,j字符结束的最长子串长度

最直接的,对于字符串中的每一个字符向后遍历一次,遇到的第一个相同的就是最短的

但我总感觉应该用动态规划来做

import java.io.*;
import java.util.StringTokenizer;

class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tokenizer = new StringTokenizer(reader.readLine());

        String str = tokenizer.nextToken();
        char[] chars = str.toCharArray();

        int startIndex=-1,length=chars.length+1;

        for(int i = 0;i<chars.length-1;i++){
            for(int j =i+1;j< chars.length;j++){
                if(chars[i]==chars[j]&&j-i<length){
                    startIndex=i;
                    length=j-i;
                    break;
                }
            }
        }

        if(startIndex>=0) for(int i=startIndex;i<=startIndex+length;i++) System.out.print(chars[i]);
    }
}
posted @ 2022-11-08 21:51  YaosGHC  阅读(21)  评论(0)    收藏  举报