使用 LINQ 检查一个字符串的字符是否包含在另一个字符串中

2024-01-08

我正在用 C# 在命令行中制作拼字游戏。玩家必须输入一些单词,如下所示:

Word Points
some 6
first 8
potsie 8
day 7
could 8
postie 8
from 9
have 10
back 12
this 7

玩家收到的信件是这样的:

sopitez

该值是一个字符串。我会检查这些字母是否包含在单词中。为此我尝试过这段代码:

String highst = (from word
                 in words 
                 where word.Contains(letters)
                 orderby points descending
                 select word).First();

但我怎么想都行不通。此代码不会选择任何单词。我知道原因是因为sopitez不包含在任何单词中。

我现在的问题是有没有办法检查字符串中的字符letters包含到单词中,而不是在字符上循环。

Note:每个字母在解决方案中最多只能使用一次。

如果我计算结果一定是potsie or postie. (我必须为此写出逻辑)

P.S.: I'm playing this game: www.codingame.com/ide/puzzle/scrabble https://www.codingame.com/ide/puzzle/scrabble


This will not be performant at all but at least it will do the trick. Notice that I've used a dictionary just for the sake of simplicity (also I don't see why you would have repeated words like "potsie", I've never played scrabble). You can as well use a list of Tuples if you follow this code

EDIT:我根据OP的新评论对此进行了更改

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {

        var letters = new HashSet<char>("sopitez");

        var wordsMap = new Dictionary<string, int>()
        {
            {"some", 6}, {"first", 8}, {"potsie", 8}, {"postie", 8}, {"day", 7},
            {"could", 8}, {"from", 9}, {"have", 10}, {"back", 12},
            {"this", 7}
        };

        var highest = wordsMap
            .Select(kvp => {
                var word = kvp.Key;
                var points = kvp.Value;
                var matchCount = kvp.Key.Sum(c => letters.Contains(c) ? 1 : 0);
                return new {
                    Word = word,
                    Points = points,
                    MatchCount = matchCount,
                    FullMatch = matchCount == word.Length,
                    EstimatedScore = points * matchCount /(double) word.Length // This can vary... it's just my guess for an "Estiamted score"
                };
            })
            .OrderByDescending(x => x.FullMatch)
            .ThenByDescending(x => x.EstimatedScore);


        foreach (var anon in highest)
        {
            Console.WriteLine("{0}", anon);
        }       

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

使用 LINQ 检查一个字符串的字符是否包含在另一个字符串中 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 如何使用 LINQ 获取唯一 id 列的最大值

    如何使用 LINQ 以最简单的方式编写此代码 SELECT MAX Game id AS MaxValue FROM Dim Game Try context Dim Games Max g gt g Game id
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 使用类型转换运算符

    我有一个 Visual Studio 2008 C 应用程序 我需要从采用可变大小缓冲区的函数中获取信息 所以 我有一个类支持该类型std vector并实现一个转换运算符到我想要的类型 class CMibIpForwardTable p
  • 标识符“n”未定义,“对象”不包含这样的成员

    Visual Studio Code 1 17 0 生成错误Angular当我处理来自不在基类上的继承类型的成员并且基类在组件上声明时 模板 在下面的代码中 显然maxLength不存在于QuestionBase 但是我该怎么办呢 Angu
  • 无法在 webpack-dev-server 中查看请求日志

    我在用webpack dev server在本地充当 CDN 服务器来提供各种静态资源 如 css js html 等 一切运行正常 但出于调试目的 我无法看到 CDN 服务器收到的请求 webpack dev server一旦编译了静态资
  • 如何在 Rust 1.12 中检查 read_line 中的 EOF?

    考虑以下程序 如何检测 stdin 中的 EOF 并打破循环 use std io use std process fn main let mut sum 0 loop let mut number str String new match
  • 如何覆盖按钮点击角度的测试? (Stackblitz附后)

    我正在制作一个非常简单的应用程序 它有一个输入框和一个按钮 输入用于输入email 订阅button与事件处理程序 输入电子邮件并单击按钮将进行 api 调用 此方法有效 subscribeEmail this error if this
  • 如何在Spring中将文件夹的所有文件加载到资源列表中?

    我有一个文件夹 想要使用 Spring 和通配符将所有 txt 文件加载到列表中 通过注释我可以执行以下操作 Value classpath dir txt private Resource files 但是我怎样才能以编程方式使用 spr
  • RGB 与 HLS 之间的转换

    我正在使用 python 的 colorsys 库将 RGB 颜色值转换为 HLS 为了验证一下 我尝试转换回 RGB 并得到了不同的值 我可以理解由于精度问题而产生的微小差异 但这些值有很大不同 这是我的代码 import colorsy
  • django原始查询百分号问题

    我尝试在 Django 中进行原始 sql 查询like函数 但结果为空 我尝试mysql客户端工具这个查询并得到很多记录 如何解决这个问题 我的查询 SELECT s s id as pk FROM d status as s selec
  • 查询 google play 商店的应用程序版本?

    有没有一种方法可以在游戏商店中查询应用程序的版本 而无需用户凭据 我知道这个非官方 API http code google com p android market api http code google com p android m
  • iPhone SDK 中“ ”(空格)的转义序列是什么?

    在我的 iPhone 应用程序中 我有一个 ASCII 艺术 两个字符之间有很多空格 所以我需要添加空格的转义序列来代替每个空格 iPhone SDK 中的空格转义序列是什么 您可以使用不间断空格 http en wikipedia org
  • AWS CodeBuild buildspec.yml 递归获取所有文件和子文件夹

    我正在尝试使用 AWS CodeBuild 获取嵌套内的所有文件和子文件夹public文件夹并使用 CodePipeline 部署到 S3 存储桶 我能够将它们全部连接在一起 但很难配置buildspec yml文件以获得我想要的输出 我的
  • Rcpp 和 CULA:分段错误

    我从以下内容中提取了相关位GPU工具R 用于在我的 GPU 上运行 QR 分解的包Rcpp通过动态加载链接到的共享库库拉工具 航站楼内一切顺利R app在我的 Mac 上 结果符合R s qr 函数 但问题是退出时发生分段错误R app 使
  • 使用 Hibernate 注解映射枚举类型

    我的 Java 模型上有一个枚举类型 我想将其映射到数据库上的表 我正在使用 Hibernate Annotations 但我不知道该怎么做 由于我搜索的答案相当旧 我想知道哪种方式最好 提前致谢 除了这个之外你还需要其他东西吗 Enume
  • clusterExport、环境和变量范围

    我编写了一个函数 在其中定义变量并加载对象 这是一个简化版本 fn1 lt function x load data RData a vector named data source myFunctions R library raster
  • 为淘汰赛创建二叉树

    我正在尝试创建一个用于淘汰赛的二叉树 该树由带有左指针和右指针的 TNode 组成 这是我想出的代码 如下 然而 它在使用指针时遇到了困难CreateTree部分 一旦创建了一个足够大的空树 我需要将 Memo1 List 上的名称添加到树
  • 如何在不更改 Xcode 项目的情况下#ifdef 环境变量?

    我想检测 Xcode 设置之外的环境变量 我可以在运行时检查环境 如中指定的那样执行此操作检测 iOS 应用程序是否在调试器中运行 https stackoverflow com questions 4744826 detecting if
  • 如何正确重载 TypeScript 中的函数?

    谁能告诉我这里的类型有什么问题吗 我试图让自己清楚 TS 中的重载 但下面的问题让我真的很困惑 type myNumbers 1 2 3 type myStrings a b c interface ReturnValue tag a 1
  • Python 的 CSV 读取器和迭代

    我有一个 CSV 文件 如下所示 Company Inc 10 30 09 A R Summary Aged Analysis Report 10 35 01 All Clients USER Client Account Customer
  • 将 xib 文件添加到 Swift 包

    我想开始使用模块化代码以及新的 Swift Package Manager 与 Xcode 11 的集成 问题是我似乎无法将任何类型的 UI 文件添加到我的新包中 我只需要添加一个 xib 文件 这是如何实现的 目前 Swift 包仅支持源
  • 使用 LINQ 检查一个字符串的字符是否包含在另一个字符串中

    我正在用 C 在命令行中制作拼字游戏 玩家必须输入一些单词 如下所示 Word Points some 6 first 8 potsie 8 day 7 could 8 postie 8 from 9 have 10 back 12 thi