TIL 8|アルゴリズムの複数のTIP 1について



今日はアルゴリズムの問題を解くときに悟ったことを整理します!

何を整理しますか。

  • 回文
  • リスト右/左押し
  • 数字抽出
  • 前後の違う電話番号はStringです。

    check_str = "abcba"
    for i in range(len(check_str)//2):
    	# 반복문~
    回文関連アルゴリズムを解くには,全長の1/2を調べるだけでよい.
    (どうせ前後は同じ!)
    あるいは
    check_str = "abcba"
    if check_str == check_str[::-1]:
    	return True
    手書きでOKな事実!簡単ですね.👍

    右/左にリストを押します。

    # 원래 리스트!
    a = [1, 2, 3, 4, 5]
    
    # 왼쪽으로 밀기?
    a = [2, 3, 4, 5, 1]
    
    # 오른쪽으로 밀기?
    a = [5, 1, 2, 3, 4]
    上記の方法で作りたい場合、どんな方法が使えますか?
    私は最初は難解な回り道をしていたのですがforゲートiの値len(a)step-1の値を使って、以下の方法で書くと便利になりました!
    # 왼쪽으로 밀기
    a.append(a.pop(0))
    
    # 오른쪽으로 밀기
    a.insert(0, a.pop())
    ガチャンと鳴らす😱👍

    数字だけを選ぶ?


    私が答えた問題は、「A 34 BV 1 DSC 6」という文字列の中で、文字が昇順に並べられ、数字が加算され、最後に文字列を入れる問題ですが、この問題では、どうして数字だけを選ぶことができますか?
    # 나의 방법
    for x in check_str:
    	if ord('0') <= x <= ord('9'):
        	...
    このように解きほぐすのは...isdigit関数を知るだけでOK!逆に文字列を認識する方法はisalpha()!両関数ともreturnTrue/False
    # 더 좋은 방법
    for x in check_str:
    	if x.isdigit():
         ...
    ずっときれいになりました.
    これからもこれらの方法を堅持して、努力して勉強します!

    Today, Learned


    学識

  • 回文の場合a[::-1]手軽すぎてよかった!
  • リストミーは質問でなぜ思いつかなかったのかinsert😂
  • 忘れないで
  • isdigit()isalpha()!
  • に感銘を与える

  • 内蔵関数.もっと聞いてみます!
  • 私の考えを覆す!
  • 今日の一言


    やはりコードの世界では、私の知っている知識はまだ新しい足の1ミクロンにも満たない.