📚
【Python】競プロで使えるかもしれない小ネタ(String編)
1.文字列リストを半角スペース区切りの文字列にする
strings = ['I', 'have', 'a', 'pen.']
print(" ".join(strings)) # "I have a pen."
2."Yes"/"No"を返したいときにやるやつ
answer = 1
print('YNeos'[answer != 1::2]) # Yes
print(["No", "Yes"][answer == 0]) # No
# 三項演算子を使うのが無難です
print("Yes" if answer == 1 else "No") # Yes
3.文字の出現数をカウントする
# よくある「文字列Aの文字を入れ替えて文字列Bがつくれるか」っていうやつ
mojiretsu = "anagram"
mojicnt = {}
for c in mojiretsu:
# getを使えばdictの要素存在チェックしなくていいのでシンプル
mojicnt[c] = mojicnt.get(c, 0) + 1
print(mojicnt)
# {'a': 3, 'n': 1, 'g': 1, 'r': 1, 'm': 1}
4.文字列Aで使用されている文字が文字列Bにすべて存在するか
# 文字列A,Bの文字使用回数辞書を作成する(上記3を参照)
stra_dic = {"s": 2, "t": 1, "p": 1}
strb_dic = {"s": 2, "t":1, "e": 1, "p": 1}
print(all(strb_dic.get(char, 0) >= count for char, count in stra_dic.items())) # True
5.文字列の循環比較
#文字列を2文字ずつチェックして、最後の文字は最初の文字を比較する
s = 'abcdef'
for i in range(len(s)):
print(s[i]+s[(i+1)%len(s)])
"""
ab
bc
cd
de
ef
fa
"""
Discussion