You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串重复字符间加连字符的方法问询(限指定API)

解决方案:用指定Java API实现重复字符间添加连字符

我完全理解你的需求——你需要一个严格限定使用charAt()、length()和/或substring()的Java方法,来遍历字符串并在连续重复的字符之间插入连字符。咱们直接上实现方案:

实现思路

  • 先处理边界情况:如果输入字符串为空、null或者长度小于2,直接返回原字符串(因为没有重复字符的可能)。
  • 从字符串的第二个字符开始,逐个和前一个字符对比。
  • 一旦发现当前字符和前一个字符相同,就在两者之间插入连字符;否则直接拼接字符。
  • 用StringBuilder来高效拼接结果(毕竟Java中String是不可变的,频繁拼接会产生额外对象)。

完整代码

public class DuplicateHyphenator {
    public static String addHyphensBetweenDuplicates(String input) {
        // 处理边界情况,避免空指针和无意义遍历
        if (input == null || input.length() < 2) {
            return input;
        }
        
        StringBuilder result = new StringBuilder();
        // 先添加第一个字符作为初始值
        result.append(input.charAt(0));
        
        // 从第二个字符开始遍历字符串
        for (int i = 1; i < input.length(); i++) {
            char currentChar = input.charAt(i);
            char prevChar = input.charAt(i - 1);
            
            // 若当前字符和前一个重复,先插入连字符
            if (currentChar == prevChar) {
                result.append('-');
            }
            // 拼接当前字符
            result.append(currentChar);
        }
        
        return result.toString();
    }

    // 测试示例
    public static void main(String[] args) {
        System.out.println(addHyphensBetweenDuplicates("Hello")); // 输出: He-llo
        System.out.println(addHyphensBetweenDuplicates("aaabbb")); // 输出: a-a-a-b-b-b
        System.out.println(addHyphensBetweenDuplicates("Mississippi")); // 输出: Mi-ss-i-ss-i-pp-i
        System.out.println(addHyphensBetweenDuplicates("A")); // 输出: A
        System.out.println(addHyphensBetweenDuplicates(null)); // 输出: null
    }
}

代码说明

  • 边界处理:提前过滤空字符串、null和短字符串,避免不必要的计算和异常。
  • 遍历逻辑:全程只用charAt()获取字符、length()判断遍历范围,完全符合你要求的API限制。
  • 高效拼接:StringBuilder比直接用String的+拼接性能更优,尤其是处理长字符串时。

如果你坚持只用String而不使用StringBuilder,也可以替换成纯字符串拼接版本(虽然效率稍低,但同样满足API限制):

public static String addHyphensBetweenDuplicates(String input) {
    if (input == null || input.length() < 2) {
        return input;
    }
    
    String result = String.valueOf(input.charAt(0));
    for (int i = 1; i < input.length(); i++) {
        char currentChar = input.charAt(i);
        char prevChar = input.charAt(i - 1);
        
        if (currentChar == prevChar) {
            result += '-';
        }
        result += currentChar;
    }
    return result;
}

内容的提问来源于stack exchange,提问作者pro5476

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:47:28