查找字符串中只出现一次的字符

2024-04-28

我正在用 PHP 编写一个算法来解决给定的数独难题。我已经设置了一个带有两个类的面向对象的实现:Square9x9 棋盘上每个单独图块的类,以及Sudoku类,其矩阵为Squares 代表董事会。

我正在使用的算法的实现是一种三层方法。第一步,仅解决最基本的难题(但也是最有效的),是根据棋盘的初始设置填充只能取单个值的任何方格,并相应地调整其余部分的约束未解的方块。

通常,这种“不断传播”的过程并不能完全解决棋盘问题,但它确实解决了相当大的问题。然后第二层将启动。它解析每个单元(或 9 个方格,它们必须全部具有唯一的数字分配,例如行或列),以获取每个未解方格的“可能”值。该可能值的列表在中表示为字符串Square class:

class Square {

private $name;                // 00, 01, 02, ... , 86, 87, 88
private $peers;               // All squares in same row, col, and box
private $number;              // Assigned value (0 if not assigned)
private $possibles;           // String of possible numbers (1-9)

public function __construct($name, $p = 0) {
  $this->name = $name;
  $this->setNumber($p);
  if ($p == 0) {
    $this->possibles = "123456789";
  }
}

// ... other functions

给定一个单元中未解决的正方形的整个数组(如上面第二层中所述),第二层将把所有“可能”的字符串连接成一个字符串。然后,它将在该单个字符串中搜索任何唯一的字符值 - 不重复的值。这将表明,在平方单位内,只有一个平方可以呈现该特定值。

我的问题是:为了实现第二层,如何解析一个单元中所有可能值的字符串并轻松检测唯一值?我知道我可以创建一个数组,其中每个索引都由数字 1-9 表示,并且我可以为我找到的该数字的每个可能值将相应索引处的值增加 1,然后再次扫描数组以查找任何值为 1,但这似乎效率极低,每个单元都需要对数组进行两次线性扫描,而数独谜题中有 27 个单元。


这有点像您已经排除的“效率极低”,但使用内置函数,因此它可能非常有效:

$all_possibilities = "1234567891234";
$unique = array();
foreach (count_chars($all_possibilities, 1) as $c => $occurrences) {
  if ($occurrences == 1)
    $unique[] = chr($c);
}
print join("", $unique) . "\n";

打印:“56789”

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

查找字符串中只出现一次的字符 的相关文章

  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 查找最接近点的多边形顶点的索引

    Heading 我需要找到最接近点的多边形的索引 所以在这种情况下 输出将是 4 和 0 这样 如果添加了红点 我就知 道将顶点放置在数组中的位置 有谁知道从哪里开始 抱歉 如果标题有误导性 我不知道如何正确表达它 In this case
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex

随机推荐

  • 如何自动生成已实现接口的方法

    PhpStorm 中是否有一种方法可以自动生成给定类正在实现的接口所需的空方法 假设我们有一个包含 3 个方法的接口 当定义实现该接口的新类时 一些选项可以为所有必需的方法自动生成容器 你当然可以 有 3 种方法可以做到这一点 Press
  • 错误 401 - 浏览器中的 Spring Boot 执行器登录名/密码

    我将 Spring Boot 与执行器一起使用 并添加安全配置 management port 8088 management address 127 0 0 1 management security enabled true secur
  • Listview Onclick Listener 更新 Cardview 布局后不工作

    我已经更新了布局 用按钮替换了 ImageViews 当我将旧布局与 ImageViews 一起使用时 Listview OnCLick 侦听器现在无法工作 如果需要进一步正确格式化 请告诉我 我们将提供任何帮助 活动中的监听器 lvIte
  • 在 awk 中按特定顺序打印文件

    我正在关注这个链接https stackoverflow com a 54599800 10220825 https stackoverflow com a 54599800 10220825 file txt Iteration 1 RA
  • 在正确的时机批量创建视频 .srt 字幕

    好家伙 我什至不知道从什么开始 所以 我有一个包含很多视频的文件夹 我需要的是使用这些视频的名称创建字幕 同时注意其长度以创建 srt 格式的字幕 我已经查找了一些信息并复制了一些代码 echo off set dirpath 1 dir
  • 谷歌可视化将 0 轴与两个不同的 y 轴对齐

    我正在创建一个组合图 https developers google com chart interactive docs gallery combochart与谷歌的可视化库 我正在绘制商店一天内的客流量和收入图表 我已将抽奖选项设置为
  • 我可以在 .NET 2.0 或 3.0 中使用扩展方法和 LINQ 吗?

    当我尝试使用 NET 2 0 或 3 0 运行时添加扩展方法时 出现错误 无法定义新的扩展方法 因为编译器需要 类型 System Runtime CompilerServices ExtensionAttribute 不能 成立 您是否缺
  • 用于滚动文本的CSS文本动画[重复]

    这个问题在这里已经有答案了 我想我已经完成了一半 但我需要一些 CSS3 或 jQuery 帮助来完成这个滚动文本 我有一个 div 我需要文本从左向右滚动 然后当点击 div 末尾时再次从右向左滚动 依此类推 我目前从左到右 但它似乎在
  • 如何在 Android 中使用 Gson 和 Retrofit 解析深层嵌套 json 对象中的字段?

    我有一个独特的情况 我必须从 json 的深层嵌套对象中获取某些时间 这有点复杂 我找不到解决方案 所以寻找解决这个问题的想法和方法 我有一个 json 如下 mySpaceId 73220 myBuildingId 14019 myFlo
  • 为什么没有值的变量返回 true 且为空?当在视图中使用时)?

    The empty 方法对于 nil 类是未定义的 所以当你尝试时nil empty 在控制台中它给出 undefined method empty for nil NilClass 我在 application helper rb 中创建
  • CordovaApp.Windows.jsproj(70,3):错误 MSB4019:导入的项目

    完整错误日志 C Users user Development Tutorials cordova tutorial hello platforms windows CordovaApp Windows jsproj 70 3 error
  • 以 ng-repeat 角度随机播放数组

    我正在创建一个测验 每次开始测验时我都想打乱问题的顺序 这样它们就不会每次都以相同的顺序出现 我的 html 代码中有这样的内容 div div question question div img img class quizImg div
  • 在 MATLAB 中绘制圆

    我被要求找到在 MATLAB 中绘制圆的不同方法 看起来很无聊 不过我可以想出一些想法 有些可能效率低下 Method 1 ezpolar x 1 Method 2 t linspace 0 2 pi 100 plot sin t cos
  • iPhone X 的顶栏高度是多少?

    我想知道 iPhone X 顶栏的具体高度 您能否提及iPhone X的状态栏和导航栏高度 请帮我 然而 iPhone X 上的显示屏145pt比 4 7 英寸显示屏高 从而为内容提供大约 20 的额外垂直空间 欲了解更多信息 请获取 Ap
  • 使用 GridsearchCV () 进行保留验证

    GridsearchCV 有一个参数cv 默认值为3 表示是3倍 有没有办法将 Gridsearch 与保留验证方案一起使用 例如80 20 分割 你可以使用sklearn model selection ShuffleSplit or s
  • ESLint 错误:“@storybook/react”应该列在项目的依赖项中,而不是 devDependencies

    使用 ESLint 将 Storybook 安装到 React js 应用程序中后 VSCode linter 无法识别 storybook react示例中的导入 stories js files 它给了我以下错误 storybook r
  • Java 中是否有等效于 C++ 的析构函数? [复制]

    这个问题在这里已经有答案了 最简单的设计如下 class Session Timer t new Timer 每当 Session分配完毕后 我在其中启动一个计时器 计时器将在 10 20 分钟后到期 现在 假设如果Session在计时器到
  • C++ 强制转换为 void 的目的是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 将未使用的返回值强制转换为 void https stackoverflow com questions 689677 casting unused return values to void 我读了
  • 如何恢复默认状态栏颜色?

    在我的一项活动中 我不希望状态栏有任何颜色 我希望它在我的应用程序运行之前保持为任何颜色 我可以将其更改为黑色 但黑色不是默认值 默认值是透明的 我不想尝试找出哪种透明度是正确的 因为它在其他人的手机上可能有所不同 所以我想在此特定活动中基
  • 查找字符串中只出现一次的字符

    我正在用 PHP 编写一个算法来解决给定的数独难题 我已经设置了一个带有两个类的面向对象的实现 Square9x9 棋盘上每个单独图块的类 以及Sudoku类 其矩阵为Squares 代表董事会 我正在使用的算法的实现是一种三层方法 第一步