循环同构串的定义:不断地将的部分提前到
之前,得到一个新的字符串,这些新的字符串称为循环同构串。
例:的循环同构串为:
,
,
,
。
如果
没有在
的任意一个循环同构串中出现则返回
否则返回字符串代表答案。
循环同构串的定义:不断地将的部分提前到
之前,得到一个新的字符串,这些新的字符串称为循环同构串。
例:的循环同构串为:
,
,
,
。
"aaabaaa","aaaa"
"aaaaaab"
包含
![]()
次并且字典序最小
包括,只由小写字母构成
public class Solution { /** * * @param S1 string字符串 S1 * @param S2 string字符串 S2 * @return string字符串 */ public String CycleString (String S1, String S2) { if (!S1.equals(S1.toLowerCase()) || !S2.equals(S2.toLowerCase()) || S1.length() < 1 || S2.length() < 1 || S1.length() > 100000 || S2.length() > 100000) { return "IMPOSSIBLE"; } int len = S1.length(); S1 = S1 + S1 + S1; int star = S1.indexOf(S2); if (star < 0) return "IMPOSSIBLE"; int end = star + S2.length(); int i = star + len; int t = i; int cc=0; int maxC = 0; while (i >star) { i--; if(cc>maxC && i==end){ t = i; } if(i>star && i<end){ continue; } char j = S1.charAt(i); if (j < S1.charAt(t) ) { t = i; } else if(j == S1.charAt(t)){ cc++; } else{ if(cc>maxC && i>star){ maxC=cc; t = i+1; } cc=0; } } return S1.substring(t, t + len); } }