- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
题目地址:https://leetcode.com/problems/reconstruct-original-digits-from-english/description/
Given a non-empty string containing an out-of-order English representation of digits 0-9, output the digits in ascending order.
Note:
1、 InputcontainsonlylowercaseEnglishletters.;
2、 Inputisguaranteedtobevalidandcanbetransformedtoitsoriginaldigits.Thatmeansinvalidinputssuchas"abc"or"zerone"arenotpermitted.;
3、 Inputlengthislessthan50,000.;
Example 1: Input: "owoztneoer"
Output: "012"
Example 2: Input: "fviefuro"
Output: "45"
根据一个打乱了的英文表示的字符串以升序重构出阿拉伯数字。
刚开始就做错了,都怪我太年轻,以为从0~9把所有能够成的都提前构成,最后就是结果了。这样不对,因为可能会有剩余的字符了。这个题说了,不会有剩余字符。
这个题不是很好,并没有考编程的思想,而是考的找规律。。面试应该不会问的。
错误代码:
class Solution(object):
def originalDigits(self, s):
"""
:type s: str
:rtype: str
"""
number = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
count = collections.Counter(s)
res = ''
for i, num in enumerate(number):
while True:
word_count = 0
for c in num:
if count[c] > 0:
word_count += 1
if word_count == len(num):
res += str(i)
count.subtract(collections.Counter(num))
else:
break
return res
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
正确做法如下:
选自:http://bookshadow.com/weblog/2016/10/16/leetcode-reconstruct-original-digits-from-english/
统计字符串s中各字符的个数,需要注意的是,在枚举英文字母时,需要按照特定的顺序方可得到正确答案。
例如按照顺序:6028745913,这个顺序可以类比拓扑排序的过程。
观察英文单词,six, zero, two, eight, seven, four中分别包含唯一字母x, z, w, g, v, u;因此6, 0, 2, 8, 7, 4需要排在其余数字之前。
排除这6个数字之后,剩下的4个数字中,按照字母唯一的原则顺次挑选。
由于剩下的单词中,只有five包含f,因此选为下一个单词;
以此类推,可以得到上面所述的顺序。
在上文代码的基础上,我进行了一点点的技巧性的改变,就是Counter()自带的有subtract()方法,直接从字典中减去了新字典。。
class Solution(object):
def originalDigits(self, s):
"""
:type s: str
:rtype: str
"""
cnts = collections.Counter(s)
nums = ['six', 'zero', 'two', 'eight', 'seven', 'four', 'five', 'nine', 'one', 'three']
numc = [collections.Counter(num) for num in nums]
digits = [6, 0, 2, 8, 7, 4, 5, 9, 1, 3]
ans = [0] * 10
for idx, num in enumerate(nums):
cntn = numc[idx]
t = min(cnts[c] / cntn[c] for c in cntn)
ans[digits[idx]] = t
for i in range(t):
cnts.subtract(cntn)
return ''.join(str(i) * n for i, n in enumerate(ans))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
题目地址:https://leetcode.com/problems/reconstruct-itinerary/description/ 题目描述 Given a list of airline
题目地址:https://leetcode.com/problems/queue-reconstruction-by-height/#/descriptionopen in new window 题
我已经用两个相机的固有相机矩阵成功计算了旋转、平移。我还从左右摄像头获得了校正后的图像。现在,我想知道如何计算一个点的 3D 坐标,只是图像中的一个点。在这里,请看绿点。我看了一下方程,但它需要我不知
我正在使用 boost:serialization 将数据结构保存到文件中。实际数据是类和子类的指针 vector 。然而,被序列化的类的构造函数将另一个实例化类 Agent 作为参数,它是一个控制与
我正在使用 RESTEasy 来使用 REST 服务,我正在尝试使用 Twitter 的搜索 API。 所以我创建了这个界面: public interface SimpleClient { @G
题目地址:https://leetcode.com/problems/reconstruct-original-digits-from-english/description/ 题目描述: Giv
我有这些数据类型: data PointPlus = PointPlus { coords :: Point , velocity :: Vector } deriving (
我的目的是通过另一个 Hermes2 向 MSH (Hermes2 http://www.cecid.hku.hk/hermes.php ) 发送 ebxml 消息。 我正在发送相当简单的消息(没有附
我是 opencv 库的初学者。我已经在 Ubuntu 17.04 上安装了它,安装过程中的一切都很完美,一点错误都没有。我已经安装了 Opencv-master,构建了它,然后我下载了 opencv
我目前正在尝试从NERF模型重建网格,我注意到大多数NERF实现都提供了一个Python脚本,用于通过COLMAP从图像中提取相机姿势。我的理解是,这些脚本使用稀疏重建,或者至少使用COLMAP的特征
我正在将 ARKit 与 SceneKit 结合使用,并想让我的 3D 对象与 reconstructed scene 物理交互由带有 LiDAR 传感器的设备创建 (config.sceneReco
我正在回答下面的问题。 序列 [0, 1, ..., N] 被打乱了,你对它的顺序的唯一线索是一个数组,表示每个数字是大于还是小于最后一个。给定这些信息,重建一个与其一致的数组。 例如,给定 [Non
映射任意时髦的嵌套列表的最简单方法是什么expr到函数 unflatten以便 expr==unflatten@@Flatten@expr ? 动机:Compile只能处理完整的数组(我刚学到的东西—
typedef struct { union { uint32_t ss32; struct { unsigned int res
我刚开始学习 Rx,并尝试使用 SerialPort 从 GPS 设备实现“NMEA 句子阅读器”。事实上,它的 GPS 数据对这个问题来说不太重要,所以让我们澄清一下 NMEA 格式由线条组成,“$
If you want to keep your Neural Network architecture secret and still want to use it in an applic
If you want to keep your Neural Network architecture secret and still want to use it in an applic
我不知道在这里问这个问题是否合适,如果不合适,请见谅。 我得到了一个序列 ALPHA,例如: A B D Z A B X 我得到了 ALPHA 的子序列列表,例如: A B D B D A B D Z
我有这两个二叉树序列(不是 BSD): 顺序:3 2 1 4 5 7 6 后序:3 1 2 5 6 7 4 我们知道postOrder中的最后一个元素是根,所以我们把根定位在inOrder序列上,这样
我是一名优秀的程序员,十分优秀!