java - 查找单词中的字母子集

Posted

技术标签:

【中文标题】java - 查找单词中的字母子集【英文标题】:java - Find subsets of letters in a word 【发布时间】:2015-05-09 16:55:57 【问题描述】:

我正在尝试查找单词中字母子集的字谜;例如,如果单词是“hello”,程序将检查整个单词,然后检查缺少 1 个字母的单词,以此类推。

这是我的代码,我不确定我做错了什么:

import java.util.*;
import java.io.*;
class Perm 
    public static void main(String[] args) 

        System.out.println(permutations("hello")); 
    

    public static String permutations(String word) 
        String s = "";
        for(int i=0; i<word.length(); i++) 
            char ithChar = word.charAt(i);
            String newWord = word.substring(0,i) + word.substring(i+1);
            s = permutations(newWord);
        
        return s;

    

【问题讨论】:

请参阅***.com/questions/4240080/…,了解如何在 Java 中正确获取字符串的所有排列 【参考方案1】:

我认为您不需要在方法中存在这种误解。尝试像这样重写它:

public static void permutations(String word) 
    for(int i = word.length(); i > 0; i--)
        System.out.println(word.substring(0, i));
            

如果您不需要存储它也可以,仅用于打印。 但正如您猜测的那样,主要思想是使用递减循环。

【讨论】:

【参考方案2】:

试试这样的:

public class Perm 
  public static void main(String[] args)  
    String word = "hello";
    for(int i=word.length(); i!=0; i--) 
        String permutation = word.substring(0, i);
        System.out.println(permutation);
    
  

每次循环运行时,它会从单词的末尾去掉一个字符,你会得到这样的输出:

hello
hell
hel
he
h

(也应该很容易将其更改为将字母从单词的开头删除)。

我希望这是您想要的,因为问题不是很清楚。 (您可能还想查看this answer。)

【讨论】:

以上是关于java - 查找单词中的字母子集的主要内容,如果未能解决你的问题,请参考以下文章

从 python 中的随机输入字母中查找单词。已经有啥算法可以使用/编码?

如何在R语言中查找具有连续字母的字符串中的单词

如何使用数组中的 preg_grep 查找仅/更多指定字母的单词?

查找列表中所有与单个字母不同的单词

查找使唯一单词最大化的句子子集

力扣——查找和替换模式