擅长:python、mysql、java
<p>您可以创建一个所需长度的数组,然后在正确的位置复制<code>range2</code>和{<cd2>}的字符。在</p>
<p>所有测试都通过了:<em>(编辑:用切片分配替换了难看的for循环。)</em></p>
<pre><code>def _override_chars(array, string, indices, read_start, read_end):
substring_start = max(0, read_start - indices[0])
substring_end = read_end - indices[0]
substring = string[substring_start:substring_end]
insertion_start = max(0, indices[0] - read_start)
insertion_end = insertion_start + len(substring)
array[insertion_start:insertion_end] = substring
def prioritized_read(range1, range2, read_start, read_end):
a = [None] * (read_end - read_start)
_override_chars(a, *range2, read_start, read_end)
_override_chars(a, *range1, read_start, read_end)
return ''.join(a)
</code></pre>
<hr/>
<p><em>编辑:</em>
另一个解决方案是建立一个发电机。它的内存效率更高,因为不需要同时在内存中保存数组和最后一个字符串。在</p>
^{pr2}$