第一行一个字符串,表示目标字符串,长度不超过 1000。
输出一个整数,表示最少操作次数。
ababababc
6
先执行四次添加操作,得到 abab,然后复制粘贴一次,得到 abababab,最后添加一次 c。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.next(); StringBuilder sb = new StringBuilder(); int max = 0; for (int i = 0, j = 0; i < s.length() ; i++) { sb.append(s.charAt(i)); int idnex = s.lastIndexOf(sb.toString()); if (idnex != -1 && idnex > i) { max = Math.max(max, sb.toString().length()); } else { //sb = new StringBuilder(); int cnt = 0; while (j < i) { sb.setCharAt(cnt, '\0'); int id = s.lastIndexOf(sb.toString()); if (id != -1 && id > i) { break; } j++; cnt++; } } } //System.out.println(max); System.out.println(s.length() + 1 - max); } }