5 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
這個(gè)遵循兩個(gè)規(guī)則
x='ABCDEAB'
for i in x:
try:
if(i in x[x.index(i)+1:]):
print(i,end=" ")
x=x.replace(i,"",1)
except ValueError:
pass

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
sample_string = "ABCDEAB"
for index in range(len(sample_string)):
if sample_string[index] in sample_string[index + 1 :]:
print(sample_string[index], end="")

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是我能夠用 Java 繪制的解決方案,我猜你可以在 python 中嘗試相同的邏輯:
/*
* Rules:
* 1. i should not be greater then str.lenght()-1
* 2. j should be greater then i
* 3. if str.charAt[i] == str.charAt[j] then reset j to str.lenght()-1 and increment i
* 4. if str.charAt[i] == str.charAt[j] then decrement j but no change to i
* 5. if j <= i then increment i and set j to str.lenght()
*/
public void algorithm(String str) {
for(Integer i=0, j=str.length()-1; i < str.length() && j > i; i++, j--) {
if (str.charAt(i) == str.charAt(j)) {
System.out.println(str.charAt(i)+" Char Matched");
j = str.length();
}
else {
i--;
if (j-1 <= i+1) {
i++;
j = str.length();
}
}
}
}

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
使用計(jì)數(shù)器:
from collections import Counter
word = "ABCDEAB"
print([k for k, v in Counter(word).items() if v > 1]) # ['A', 'B']
使用列表理解:
word = "ABCDEAB"
print([k for k in set(word) if word.count(k) > 1])
編輯:如果理解有問題,請(qǐng)立即打?。?/p>
word = "ABCDEAB"
for k in set(word):
if word.count(k) > 1:
print(k)

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
由于沒有其他人這樣做,即使它不是很 Pythonic,我也提出了一個(gè)使用遞歸的解決方案。它應(yīng)該符合“無循環(huán)”要求,并且除了輸入字符串之外根本不使用任何變量(當(dāng)然無論如何都會(huì)使用一些隱藏的堆??臻g)
# Count Characters Appearing more than once in String
def nbdup(s):
if len(s) < 2:
return 0
if s.count(s[0]) == 2:
print(s[0])
return 1 + nbdup(s[1:])
return nbdup(s[1:])
print(nbdup("ABCDEAB"))
添加回答
舉報(bào)