我有一组满足以下约束条件的字符串
我想转换这些字符串,以便跟随新约束有效(而不是先前的约束)
假设初始字符串集如下
city, City, cIty, ciTy, citY, CIty, cITy, ciTY, CITy, cITY, CITY
我有一个将这些字符串映射到以下
的部分算法cit, cit1, cit2, cit3, cit4, cit5, cit6, cit7, cit8, cit9, cit10
这是通过使用以下逻辑
完成的使用上面我能够将旧的字符串集映射到新集并满足新的约束。
但是,如果原始集合本身具有由算法
生成的任何字符串,则我的算法会中断假设初始字符串集是
city, cit1, cit2, City, cIty, ciTy, citY, CIty, cITy, ciTY, CITy, cITY, CITY,
在这种情况下,由于cit1和cit2已存在于初始集中,算法会中断(因为它会生成重复的cit1和cit2)
有什么办法可以递归处理吗?
答案 0 :(得分:0)
我建议你这样做:
for each input string, s
if (result.contains(s))
result.add(s)
else
do
s = next(s)
while (result.contains(s))
result.add(s);
其中next(s)
将被定义为
split s into [prefixPart, numberPart]
num = numberPart == null ? 0 : numberPart+1
prefixLength = Math.min(prefixPart.length, 5 - num.length)
return prefixPart.substring(0, prefixLength) + num
即。 next("citY") = "citY0"
和next("cit45") = "cit46"