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

如何使用Java交换字符串的第一个元音与最后一个元音

问题原因

你的现有代码存在两个核心逻辑错误:

  1. 循环第一行直接将原字符串的当前字符追加到newWord中,之后碰到元音位置又额外追加替换后的字符,导致原元音字符没有被移除,反而新增了冗余字符
  2. 处理最后一个元音索引时,直接给newWord赋值为单个字符的子串,清空了之前所有拼接结果,完全丢失了前半段字符串内容

修正方案

有两种简单的实现方式,都可以直接复用你已经定义好的fVowel、lVowel、firstVowel、lastVowel变量:

方案1:转字符数组直接交换(推荐,性能更高逻辑更简单)

Java中String是不可变类型,转成字符数组后可以直接修改指定索引位置的字符,不需要循环拼接:

// 你之前的变量定义逻辑不变,此处直接写交换逻辑
char[] charArray = s.toCharArray();
charArray[fVowel] = lastVowel;
charArray[lVowel] = firstVowel;
String newWord = new String(charArray);

System.out.println(newWord);
return newWord;

方案2:循环拼接修正版

如果你要保留循环拼接的写法,调整判断逻辑,碰到元音位置直接加替换后的字符,非元音位置再加原字符即可:

// 推荐用StringBuilder避免频繁字符串拼接产生的冗余对象
StringBuilder newWord = new StringBuilder();
for(int i = 0; i < s.length(); i++) {
    if(i == fVowel) {
        newWord.append(lastVowel);
    } else if(i == lVowel) {
        newWord.append(firstVowel);
    } else {
        newWord.append(s.charAt(i));
    }
}

System.out.println(newWord.toString());
return newWord.toString();

两种方案都可以匹配你给出的测试用例,输出符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:09:03