如何编写可识别字符串中指定长度重复前缀的程序?
前缀重复识别程序实现
核心逻辑很明确:先提取指定长度的前缀,再检查该前缀是否出现在原字符串去掉前缀后的剩余部分中,最后根据判断结果输出对应内容。
具体实现步骤
- 提取长度为
n的前缀:用substring(0, n)即可,先做合法性校验(比如n不能小于1,也不能大于原字符串长度的一半,否则剩余部分不可能容纳前缀)。 - 获取剩余字符串:用
substring(n)拿到原字符串去掉前缀后的部分。 - 生成判断布尔值:用
contains()方法检查剩余字符串是否包含前缀,结果存入布尔变量。 - 通过
if-else输出结果:根据布尔变量的值,输出对应的提示文本。
示例代码(Java)
public class PrefixChecker { public static void main(String[] args) { String inputStr = "coconut"; int n = 2; // 可替换为3测试不同情况 // 合法性校验,避免索引越界 if (n <= 0 || n >= inputStr.length()) { System.out.println("输入的int值不合法,请输入1到" + (inputStr.length()-1) + "之间的数"); return; } String prefix = inputStr.substring(0, n); String remainingStr = inputStr.substring(n); boolean isRepeated = remainingStr.contains(prefix); if (isRepeated) { System.out.println(prefix + " is a repeated prefix in " + inputStr); } else { System.out.println(prefix + " is NOT a repeated prefix in " + inputStr); } } }
代码说明
- 合法性校验:防止输入的
n过大或过小导致substring方法报错,比如n等于原字符串长度时,substring(n)会直接抛出索引越界异常。 - 布尔值
isRepeated直接作为if判断条件,清晰对应"是否重复"的逻辑。 - 测试
n=2时,前缀"co"存在于剩余字符串"conut"中,输出重复提示;n=3时,前缀"coc"不在剩余字符串"onut"中,输出不重复提示。
内容的提问来源于stack exchange,提问作者Dαin
相关产品推荐
相关产品推荐

