按照单词的字母是否相同对字符串数组进行分组
来源:互联网 发布:java actionperformed 编辑:程序博客网 时间:2024/05/21 12:47
- 需求
- 解决思路
- 一种写法的代码实现
- 后记
好久不动手写代码了,真得有些生疏了。正所谓:曲不离口,拳不离手;勤行果然还是要常练习的。
上午看到一个面试题,是java版的,然后觉得给学生拿来做测试题不错,所以尝试写了一下,但真去做得时候,发现并不如相像那样简单。
需求:
给了一个数组(如: [“cars”, “thing”, “scar”, “dog”, “god”, “arcs”, “the”]),需要把由颠倒字母顺序组成的单词放到同一个数组(生成后的结果:[[“cars”, “scar”, “arcs”], [“thing”], [“dog”, “god”], [“the”]])
解决思路:
两重遍历,第一遍过按照给定数组过滤,第二重,把当前单词以外没有做过比较的单词与其进行比较
一种写法的代码实现:
<?php$tool = ["cars", "thing", "scar", "dog", "god", "arcs", "the"]; // 用于遍历循环$words = ["cars", "thing", "scar", "dog", "god", "arcs", "the"]; // 用于比较、排除的数组$res = array( ); // 用于存放结果// 先遍历整个数组foreach ($tool as $pos => $word) { $temp = array(); $wordArr = str_split($word); if (in_array($word, $words)) { // 以下if判断从比较数组中清除当前参与比较的单词 $tempKey = array_search($word,$words); if(isset($tempKey)){ unset($words[$tempKey]); } $temp[] = $word; // 把当前单词加入临时数组; }else{ continue; // 跳过已比较过的单词 } // 以下循环将当前单词与未参与比较过的单词进行比较 foreach ($tool as $comparingPos => $comparingWord) { if (in_array($comparingWord, $words)) { $comparingArr = str_split($comparingWord); $intersect = array_intersect($comparingArr, $wordArr); if (count($wordArr)== count($intersect)) { $temp[] = $comparingWord; // 把当前单词加入临时数组; $tempKey = array_search($comparingWord,$words); if(isset($tempKey)){ unset($words[$tempKey]); } } }else{ continue;// 跳过已比较过的单词 } } // 将比较结果放入数组 if (!!$temp) { $res[] =$temp; }}var_dump($res);
后记:
为啥要多余地写两个数组?因为循环计数器的问题。
阅读全文
1 0
- 按照单词的字母是否相同对字符串数组进行分组
- 面试题:将一个字符串数组中的字母按照以下规则排列:表中任何单词的首字母与其前面单词的尾字母相同! 要求:字符串只由小写字母构成,且每个字符串长度在2-100之间
- 字符串问题1:单词是否由相同字母组成
- 字符串是否有相同的字母
- PHP提交含有CheckBox的表单,比对字符串是否含有相同字母
- 字符串之输出所有字母组合相同的单词
- 字符串数组按照字母排序
- JS把字符串按照特定的字母顺序进行排序
- 对输入的字符串按照字母序列排序并输出
- 对ArrayList按照某个属性进行分组
- 按照字典顺序对字符串数组进行从大到小的排序。
- 对随意字母字符串按照字母表输出
- 判断字符串中是否有相同字母
- C语言实现检查单词是否为变位词(相同字母的重新排列)
- Valid Anagram:验证不考虑字母顺序不同的单词是否相同
- 242.两个字符串是否是由相同字母(出现次数也相同)组成的
- 【Practice】对一个词典处理,找出拼写含有相同字母的单词如stop和spot
- JS按照特定的条件对数组进行归类
- require.js的基本用法
- 学习笔记2017.07.03-day1,pm-HTML属性-HTML标题-HTML注释-HTML段落-HTML
- ubuntu postgresql 安装 数据存储路径更改
- Hbase性能测试2, 预分区
- Servlet的线程安全
- 按照单词的字母是否相同对字符串数组进行分组
- 树、森林和二叉树之间的转换
- Python的几种实现
- kcptun windows端的配置超简单
- AS开发中出现Error(十一)——Duplicate files copied in APK META-INF/LICENSE.txt
- python字典相关
- linux errno 104 Connect reset by peer
- springMVC工作流程,带图
- 欢迎使用CSDN-markdown编辑器