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

Java中实现变位词生成:如何交换数组元素位置?

在Java中交换字符数组元素以生成变位词

嘿,这事儿其实挺 straightforward 的!要交换字符数组里两个位置的元素,核心就是用一个临时变量来“暂存”其中一个值,防止直接赋值的时候把原数据覆盖掉。

基础交换方法

假设你已经把单词转成了char[]数组,比如char[] chars = "hello".toCharArray();,要交换索引i和j的元素,代码可以这么写:

// 先做个边界检查,避免数组越界
if (i < 0 || i >= chars.length || j < 0 || j >= chars.length) {
    throw new IllegalArgumentException("索引超出数组范围");
}

// 执行交换
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;

结合变位词生成的完整示例

既然你是要生成变位词,通常会用回溯法来遍历所有可能的排列——每次交换不同位置的元素,递归生成子排列,然后再把元素交换回来(回溯),这样就能覆盖所有组合。给你个完整的小例子:

import java.util.ArrayList;
import java.util.List;

public class AnagramGenerator {

    public static List<String> generateAnagrams(String word) {
        List<String> result = new ArrayList<>();
        char[] chars = word.toCharArray();
        backtrack(chars, 0, result);
        return result;
    }

    private static void backtrack(char[] chars, int start, List<String> result) {
        // 当start走到数组末尾,说明得到了一个完整的变位词
        if (start == chars.length - 1) {
            result.add(new String(chars));
            return;
        }

        // 从start位置开始,依次和后面的每个元素交换
        for (int i = start; i < chars.length; i++) {
            // 交换当前start和i位置的元素
            swap(chars, start, i);
            // 递归处理下一个位置
            backtrack(chars, start + 1, result);
            // 回溯:把元素交换回去,恢复原状
            swap(chars, start, i);
        }
    }

    // 封装好的交换方法
    private static void swap(char[] chars, int i, int j) {
        if (i == j) return; // 同一个位置不用交换
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
    }

    public static void main(String[] args) {
        List<String> anagrams = generateAnagrams("cat");
        anagrams.forEach(System.out::println);
        // 输出:cat, cta, act, atc, tac, tca
    }
}

小提示

  • 记得加边界检查,不然如果传入的索引超出数组长度,会抛出ArrayIndexOutOfBoundsException。
  • 如果要处理重复字符的单词(比如"aab"),可以加个去重逻辑,避免生成重复的变位词——比如用Set来存结果,或者在交换前判断当前字符是否和之前的重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:39:41