#28405: [python] 用ASCII的方式去處理符號


rich.pyps@gmail.com (sharkfoolish)

學校 : 不指定學校
編號 : 170745
來源 : [27.242.161.171]
最後登入時間 :
2023-07-06 13:48:55
a224. 明明愛明明 | From: [39.8.3.182] | 發表日期 : 2021-12-08 14:44

#題目是說「經過重新排序後,是否可以變迴文」,所以不能直接從翻轉字串去看相不相等QQ

  1. 建立一個長度26的列表1去紀錄英文字母出現的次數
  2. 將輸入進來的字串作切割成列表2
  3. 遍尋列表2,一一用ASCII的方式,將字元轉成數字去做範圍的判斷,進而篩出大寫字母和小寫字母 (這樣就可以把其他符號篩掉了)
  4. 然後同樣用ASCII的方式去轉換成列表的索引後,將相對應的次數+1  (count[ord(char)-65] += 1 ) # 因為我們希望可以直接讓A對應到陣列第0項,B對應到陣列第1項
  5. 尋找列表1的奇數是否小於等於1,如果是的話就是迴文

 

 
#28406: Re:[python] 用ASCII的方式去處理符號


rich.pyps@gmail.com (sharkfoolish)

學校 : 不指定學校
編號 : 170745
來源 : [27.242.161.171]
最後登入時間 :
2023-07-06 13:48:55
a224. 明明愛明明 | From: [39.8.3.182] | 發表日期 : 2021-12-08 14:46

#題目是說「經過重新排序後,是否可以變迴文」,所以不能直接從翻轉字串去看相不相等QQ

  1. 建立一個長度26的列表1去紀錄英文字母出現的次數
  2. 將輸入進來的字串作切割成列表2
  3. 遍尋列表2,一一用ASCII的方式,將字元轉成數字去做範圍的判斷,進而篩出大寫字母和小寫字母 (這樣就可以把其他符號篩掉了)
  4. 然後同樣用ASCII的方式去轉換成列表的索引後,將相對應的次數+1  (count[ord(char)-65] += 1 ) # 因為我們希望可以直接讓A對應到陣列第0項,B對應到陣列第1項
  5. 尋找列表1的奇數是否小於等於1,如果是的話就是迴文

 

try :

    while True:

        string = input()

        count = [0]*26

        result = 0

        

        for char in string:

            if (ord(char)>=65) and (ord(char)<=90): #A-Z

                count[ord(char)-65] += 1

            elif (ord(char)>=97) and (ord(char)<=122): #a-z

                count[ord(char)-97] += 1

 

        for i in range(26):

            if count[i]%2 == 1:

                result+=1

        if result <= 1:

            print('yes !')

        else :

            print('no...')

 

except EOFError:

    pass

 
ZeroJudge Forum