我正在试图找出我的代码有什么问题。这是我到目前为止所做的:
std::map
所以对于那些不熟悉read-it-and-weep的人来说,如果给出数字1111,它将输出41.你读取整数,序列中的下一个整数是你读完之后的内容它再次。例如,第一对夫妇是:1,11,21,1211,1111221,312211,13112221等......所以,这是我的问题:
每当我的重复一个不在它旁边的数字时,例如1211或11122211,它就不起作用了。由于某种原因,1再次被计算,一切都变得奇怪。
例如:
什么时候应该是111221.任何帮助都将非常感谢!!!
谢谢!
答案 0 :(得分:0)
您的for循环逻辑错误。首先,范围上升,但不包括n。你循环应该是render() {
const {options} = this.props;
return (
<div>
<div className="optionsModalContent">
<div className={style.optionsModalTitleBar}>
<div className={style.optionsModalTitle}>Options</div>
<div className={style.optionsModalExit} onClick={this.exitModal}>X</div>
</div>
<div className={style.optionsModalContentInner}>
<div className={style.optionsModalOptionsList}>
<div className={style.optionItem}>
<form onSubmit={this.setUser}>
<input type="text" id="userEmail" ref="userEmail" placeholder="Set account email"/>
</form>
</div>
</div>
);
}
1是因为你已经开始计数为1,所以如果你从0开始,你将重复计算第一个元素。这应该是导致此错误的原因,您将重复计算每个数字。
答案 1 :(得分:0)
使用itertools.groupby()
:
>>> import itertools as it
>>> n = 1211
>>> [(str(len(list(i))), c) for c, i in it.groupby(str(n))]
[('1', '1'), ('1', '2'), ('2', '1')]
现在只是展平并join()
:
>>> ''.join(it.chain.from_iterable((str(len(list(i))), c) for c, i in it.groupby(str(n))))
'111221'