我有一个字符串abbccdeefght
,我想从字符串中找到最后一个重复的字符。
对于上面的字符串,结果应该是字符'e'。
我尝试在python中使用Counter
模块中的collections
。
from collections import Counter
c=Counter('abbccdeefght')
c
>>> Counter({'c': 2, 'b': 2, 'e': 2, 'a': 1, 'd': 1, 'g': 1, 'f': 1, 'h': 1, 't': 1})
但不确定如何继续
答案 0 :(得分:1)
通过这种方式,您将获得最后一个重复字符的 index
def last_duplicate(line):
c=Counter(line)
#>>> Counter({'c': 2, 'b': 2, 'e': 2, 'a': 1, 'd': 1, 'g': 1, 'f': 1, 'h': 1, 't': 1})
for i, x in reversed(line):
if c[x] > 1:
return len(line) - i - 1
当然,你可以很容易找到角色
答案 1 :(得分:0)
如果你从右向左移动,你的问题相当于找到第一个重复的字符。对于每个字符,检查它是否已包含在右侧的部分中。
这样的事情:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "person_availability")
private List<Availability> availabilities;
说明:使用my_string = "abbccdeefght"
for idx in range(len(my_string) - 2, -1, -1):
char = my_string[idx]
if char in my_string[idx + 1:]:
print("Last duplicated character is: " + char)
break
我们从比字符串长度小2的数字迭代range
,一直到0.每次我们从位置idx
获取一个字符并查看它是否已包含在位置idx
的角色右侧的my_string
部分中。如果是,我们会idx
并结束我们的循环。
编辑: 根据您的进一步解释,这里是固定代码(从您的问题中不清楚)。现在我们还从右到左迭代字符,但检查字符是否包含在 left 的部分中。
print()
答案 2 :(得分:0)
input_string='abbccdeefght'
last_duplicate_string=[single_letter for single_letter in input_string if input_string.count(single_letter) > 1]
if last_duplicate_string:
print "Last duplicate character from the string %s",last_duplicate_string[-1]
else:
print "No duplicate character"
答案 3 :(得分:0)
您可以使用简单的算法
来完成mystr = 'abbccdeefght'
size = len(mystr)-1
found = 0
i=0
while (1):
if (mystr[size]==mystr[i]):
print ("found ",mystr[size]," on index ",i+1," and index ",size+1)
break
i+=1
if (i==size):
i=0
size-=1
if (size==1):
print ("not found")
break
循环将在2个条件下中断。找到并且不再需要检查数据。 希望它有所帮助
答案 4 :(得分:0)
您可以尝试使用此代码。经过测试&#34;&#34;,&#34; abba&#34;,&#34; zzasd&#34;,&#34; zxcv&#34;,&#34; abbccdeefght&#34;
# enumerates reversed list
def reverse_enumerate(seq):
p = -1
for elem in seq[::-1]:
yield p, elem
p -= 1
str = "abbccdeefght"
for i, c in reverse_enumerate(str):
# check element in left side
if c in str[i-1::-1]:
print(c, i)
# print element, position
break
答案 5 :(得分:-1)
我认为这是一个非常好的解决方案:
{% for education in education_list %}
<div id="div_education{{forloop.counter0}}" class="pr mb30">
<button class="btn btn-profile profile-edit js_edit_education_btn" data-idx={{forloop.counter0}} data-role="button">Edit</button>
<div class="row mt-10">
<div class="col-sm-3 col-md-3">Institute Name</div>
<div class="col-sm-9 col-md-9" data-role="input" data-editable>{{education.institute}}</div>
</div>
<div class="row mt-10">
<div class="col-sm-3 col-md-3">Degree</div>
<div class="col-sm-9 col-md-9" data-role="input" data-editable data-type="qualification">{{education.degree}}</div>
</div>
</div>
<form id="form_edit_education{{forloop.counter0}}" data-url='{% url "something" idx=forloop.counter0 %}' class="js_form_edit_education" style="display:none;">
<div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="{{csrf_token_value}}"></div>
<div class="row mt-10">
<div class="col-sm-3 col-md-3">Institute</div>
<div class="col-sm-9 col-md-9" data-role="input" data-editable=""><input class="pro-input js_institute" type="text" name="institute{{forloop.counter0}}" value="{{education.institute}}"></div>
</div>
<div class="row mt-10">
<div class="col-sm-3 col-md-3">Degree</div>
<div class="col-sm-9 col-md-9" data-role="mobile" data-editable=""><input class="pro-input js_degree" type="text" name="degree{{forloop.counter0}}" value="{{education.degree}}"></div>
</div>
<div class="row mt-10 save-event">
<div class="col-sm-9 col-md-9 col-sm-push-3 col-md-push-3">
<button id="save_edit_education{{forloop.counter0}}" class="btn btn-primary" data-idx="{{forloop.counter0}}" type="submit">Save</button>
<a id="cancel_edit_education{{forloop.counter0}}" data-idx="{{forloop.counter0}}" class="btn js_cancel_edit_education">Cancel</a>
</div>
</div>
</form>
{% endfor %}