计算字符串的所有可能的组合,并进行扭曲

2023-12-12

我试图允许用户在文本框中输入文本,并让程序生成所有可能的组合,但最少 3 个字符和最多 6 个字符除外。我不需要像“as”这样无用的单词, “a”、“i”、“to”等弄乱了我的数组。我还将根据字典检查每个组合,以确保它是一个真实的单词。

我已经完成了字典(精心生成,这是它的链接作为回报(警告:巨大的加载时间(对我来说)!)

无论如何,如果用户输入“ABCDEF”(无特定顺序),我如何生成,例如:

'ABC'
'BAC'
'CAB'
...
'ABD'
'ABE'
'ABF'

等等...每种可能的组合,无论顺序如何?我知道这些组合的数量非常多,但只需要计算一次,所以我不太担心。

我找到了代码示例来递归地查找固定宽度字符串(ABCDEF、ABCDFE ... ACDBFE 等)的组合(不是排列,我不需要那些)。他们没有做我需要的事情,而且我根本不知道从哪里开始这个项目。

这不是家庭作业,它最初是我的一个个人项目,后来逐渐发展到为了解决这样一个简单的问题而占据我的生活......我不敢相信我无法解决这个问题!


在我看来,你正在描述电源组

这是我个人图书馆中的一个实现:

// Helper method to count set bits in an integer
public static int CountBits(int n)
{
    int count = 0;
    while (n != 0)
    {
        count++;
        n &= (n - 1);
    }
    return count;
}


public static IEnumerable<IEnumerable<T>> PowerSet<T>(
    IEnumerable<T> src, 
    int minSetSize = 0, 
    int maxSetSize = int.MaxValue)
{
    // we want fast random access to the source, so we'll
    // need to ToArray() it
    var cached = src.ToArray();
    var setSize = Math.Pow(2, cached.Length);
    for(int i=0; i < setSize; i++)
    {
        var subSetSize = CountBits(i);
        if(subSetSize < minSetSize || 
           subSetSize > maxSetSize)
        {
            continue;
        }
        T[] set = new T[subSetSize];

        var temp = i;
        var srcIdx = 0;
        var dstIdx = 0;
        while(temp > 0)
        {
            if((temp & 0x01) == 1)
            {
                set[dstIdx++] = cached[srcIdx];
            }
            temp >>= 1;
            srcIdx++;            
        }
        yield return set;
    }
    yield break;
}

还有一个快速测试装置:

void Main()
{
    var src = "ABCDEF";
    var combos = PowerSet(src, 3, 6);

    // hairy joins for great prettiness
    Console.WriteLine(
        string.Join(" , ", 
            combos.Select(subset => 
                string.Concat("[", 
                    string.Join(",", subset) , "]")))
    );
}

Output:

[A,B,C] , [A,B,D] , [A,C,D] , [B,C,D] , [A,B,C,D] , [A,B,E] , [A,C,E] , [B,C,E] , [A,B,C,E] , 
[A,D,E] , [B,D,E] , [A,B,D,E] , [C,D,E] , [A,C,D,E] , [B,C,D,E] , [A,B,C,D,E] , [A,B,F] , 
[A,C,F] , [B,C,F] , [A,B,C,F] , [A,D,F] , [B,D,F] , [A,B,D,F] , [C,D,F] , [A,C,D,F] , 
[B,C,D,F] , [A,B,C,D,F] , [A,E,F] , [B,E,F] , [A,B,E,F] , [C,E,F] , [A,C,E,F] , [B,C,E,F] , 
[A,B,C,E,F] , [D,E,F] , [A,D,E,F] , [B,D,E,F] , [A,B,D,E,F] , [C,D,E,F] , [A,C,D,E,F] , 
[B,C,D,E,F] , [A,B,C,D,E,F]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算字符串的所有可能的组合,并进行扭曲 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 在“源/网络”选项卡中复制多个 URL

    是否可以在 Chrome 开发工具的 源 或 网络 选项卡中提取多个资源的 URL 当我想获取某个 URL 时single资源 我可以使用上下文菜单功能来完成复制链接地址 我可以从 网络 选项卡切换到此资源 反之亦然 但如果我需要获取以下
  • 正则表达式 - 从字符串中提取电话号码

    我需要从带有分隔符 波形符 的字符串中提取两个电话号码 棘手的部分是电话号码的格式可能会有所不同 字符串模式保持不变 但电话号码的格式可以是以下三种类型之一 1 4 digit extensions ex 1001 2 10 digit 5
  • Jenkins 持续集成服务器的作业特定 SVN 签出文件夹

    我刚刚设置了一个新的 Jenkins CI 服务器 这是我昨天刚安装的最新版本 我已经完成了几个工作正常的构建 我有几个不同的存储库 它可以从中提取和构建 其中大多数适用于 NET 项目等易于在任何地方构建的项目 因此只需在工作区文件夹中签
  • 带有 GoDaddy 证书的 HTTP SSL - 此服务器的证书链不完整

    一般来说 我从 GoDaddy 获得了 3 个文件 主证书文件 服务器私钥 捆绑文件 通过以下方式在我的 Go 服务器中配置了所有这些文件 cert err tls LoadX509KeyPair myalcoholist pem myal
  • 访问 Struts 2 中的所有用户会话

    我正在使用 JPA 构建 struts 2 应用程序 用户可以多次登录该应用程序 我想 用户能够在网格中查看他的所有会话 并可能突出显示当前会话 并且用户可以选择一个会话并终止它 管理员还应该能够查看所有登录的用户 还可以查看每个登录用户的
  • 如何更改元素的内部文本而不更改其子元素

    我有一个 html 元素 例如 div Change only me div but not me div div 但我只想更改第一个文本并保留子 div 不变 document getElementById el1 innerText c
  • Jquery 自动完成 utf-8 字符区分大小写

    我正在使用 jquery 自动完成插件来搜索一长串名称 它适用于所有拉丁语和英语字符 但对于土耳其语字符我遇到问题 因为搜索将区分大小写 例如 A and a将匹配包含以下内容的所有城市A or a and i不会匹配像这样的城市 stam
  • Flexbox 内的图像高度在 Chrome 中不起作用

    我有一个div using flexbox将其项目居中 里面这个div我有 3 个元素 其中之一是图像 div div div img src alt div div div container1 and container2有自己的身高
  • 尝试遮盖图像周围的圆圈不起作用

    我有一个图像 我试图在周围遮盖一个圆圈 使图像看起来是圆形的 这有点有效 但圆圈在顶部和底部达到一个点 profileImageView layer cornerRadius profileImageView frame size widt
  • Scala 案例类继承

    我有一个基于 Squeryl 的应用程序 我将模型定义为案例类 主要是因为我发现复制方法很方便 我有两个严格相关的模型 字段是相同的 很多操作是共同的 并且要存储在同一个DB表中 But有些行为仅在两种情况之一中有意义 或者在两种情况下都有
  • 使用 mlflow 提供用于评分的自定义 Python 模型

    我使用带有 mlflow 的 ML 软件生成的 Python 代码来读取数据帧 执行一些表操作并输出数据帧 我能够成功运行代码并将新数据帧保存为工件 但是 我无法使用 log model 记录模型 因为它不是我们训练和拟合的 LR 或分类器
  • 使用WindowManager添加View,但可以按回键

    我使用 WindowManager 添加了一个视图 它正确地显示了我想做的事情 但我有一个问题 这就是问题 返回键按下不会影响 Android 组件 如 Activity 我想要的是我添加的视图可以聚焦 可以单击视图的内部按钮 仅当单击视图
  • 有没有办法在批处理文件中拥有多种字体、文本大小等?

    正如标题所说 我不知道是否有任何可能的方法来做这样的事情 批处理文件中的粗体 斜体 字体 文本大小 以及是否可以在同一文件中使用它们的不同值 这可能是不可能的 但如果是的话 有人可以告诉我怎么做吗 注意 我不想讨论属性或其他什么 我的意思是
  • 创建初始数据库时访问被拒绝 - 如何授予正确的访问权限?

    我正在heroku上使用mysql创建一个新项目 他们有一个名为JawsDB的插件 它为我提供了mysql主机 用户名 密码 更新 我也尝试过使用他们的其他 mysql 插件 ClearDB 并且我有完全相同的问题 我可以像这样连接到数据库
  • 无法为 python 安装 pandas

    我正在尝试为 python 安装 pandas 但我不断收到很长的错误消息 所以我尝试了以下方法 卸载并重新安装 python 版本 3 10 0 通过命令提示符导航到目录来安装 pandas C Users 用户名 AppData Loc
  • 将特定字符串值映射到 matplotlib.pyplot.imshow() 中的特定颜色

    我有一个pandas dataframe看起来像这样 columns 0 1 2 3 4 5 A A A A B B B B B C C D D D E E F F 我想用它来绘制pyplot imshow 指定以下颜色图 color di
  • 如何从 datagridview 创建主详细信息

    这段代码插入数据库 private void btnSave Click object sender EventArgs e byte imageBt null FileStream fstream new FileStream this
  • SQLite 条件插入或替换

    我正在尝试将记录插入或更新到 sqlite 数据库中 并且仅在新值大于旧值时才更新该值 架构是 CREATE table IF NOT EXISTS SearchTable Owner INTEGER PRIMARY KEY Generat
  • 使用 jQuery 进行简单的屏幕抓取

    我一直在考虑使用 jQuery 使用简单的屏幕抓取器的想法 我想知道以下是否可行 我有简单的 HTML 页面 并且正在尝试 如果可能的话 从另一个页面获取所有列表项的内容 如下所示 主页
  • 计算字符串的所有可能的组合,并进行扭曲

    我试图允许用户在文本框中输入文本 并让程序生成所有可能的组合 但最少 3 个字符和最多 6 个字符除外 我不需要像 as 这样无用的单词 a i to 等弄乱了我的数组 我还将根据字典检查每个组合 以确保它是一个真实的单词 我已经完成了字典