46-50題

46惰蜜、字符流中第一個不重復的字符
用字典計數昂拂,然后遍歷列表,得到第一個value為1的字符

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.temp = []
    # 返回對應char
    def FirstAppearingOnce(self):
        # write code here
        dic = {}
        for i in self.temp:
            dic[i] = dic.get(i, 0) + 1
        for i in self.temp:
            if dic[i] == 1:
                return i
        else:
            return '#'
            
    def Insert(self, char):
        # write code here
        self.temp.append(char)

47抛猖、替換空格
可以直接用re模塊寫格侯,或者先用空格split再用'%20'join

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        temp = s.split(' ')
        return '%20'.join(temp)

48、矩陣中的路徑
題目看著挺難的财著,但是只要不停判斷下一個字符是否在上一個字符的上下左右四個地方就可以了联四,因此可以用遞歸實現。還要注意的是一個字符只能出現一次撑教。只需要把走過的路徑上的字符改成一個其它的字符就可以了朝墩。

class Solution:
    def hasPath(self, matrix, rows, cols, path):
        # write code here
        for i in range(rows):
            for j in range(cols):
                if matrix[i*cols + j] == path[0]:
                    if self.find_path(list(matrix), rows, \
                                      cols, path[1:], i, j):
                        return True

    def find_path(self, matrix, rows, cols, path, i, j):
        if not path:
            return True
        matrix[i*cols + j] = 0
        if j+1 < cols and matrix[i*cols+j+1] == path[0]:
            return self.find_path(matrix, rows, cols, path[1:], i, j+1)
        elif j-1 >= 0 and matrix[i*cols+j-1] == path[0]:
            return self.find_path(matrix, rows, cols, path[1:], i, j-1)
        elif i+1 < rows and matrix[(i+1)*cols+j] == path[0]:
            return self.find_path(matrix, rows, cols, path[1:], i+1, j)
        elif i-1 >= 0 and matrix[(i-1)*cols+j] == path[0]:
            return self.find_path(matrix, rows, cols, path[1:], i-1, j)
        else:
            return False

49、機器人的運動范圍
可以用廣度遍歷二叉樹的思路驮履。將走過的格子存入隊列鱼辙,然后不斷的pop和append。要注意的一點是不能走重復的格子玫镐。
代碼有點長倒戏,而且用了個列表保存走過的格子。

# -*- coding:utf-8 -*-
class Solution:
    def movingCount(self, threshold, rows, cols):
        # write code here
        def istruepos(pos, threshold, rows, cols):
            if 0<=pos[0]<=rows and 0<=pos[1]<=cols:
                temp = sum([int(x) for x in str(pos[0])]) + sum([int(x) for x in str(pos[1])])
                if temp<=threshold:
                    return True
            return False
        if rows==0 or cols==0 or threshold<0:
            return 0
        queue = [[0, 0]]
        memory = [[0, 0]]
        rst = 1
        while queue:
            i = queue.pop(0)
            if istruepos([i[0], i[1]+1], threshold, rows-1, cols-1) and [i[0], i[1]+1] not in memory:
                queue.append([i[0], i[1]+1])
                memory.append([i[0], i[1]+1])
                rst += 1
            if istruepos([i[0], i[1]-1], threshold, rows-1, cols-1) and [i[0], i[1]-1] not in memory:
                queue.append([i[0], i[1]-1])
                memory.append([i[0], i[1]-1])
                rst += 1
            if istruepos([i[0]+1, i[1]], threshold, rows-1, cols-1) and [i[0]+1, i[1]] not in memory:
                queue.append([i[0]+1, i[1]])
                memory.append([i[0]+1, i[1]])
                rst += 1
            if istruepos([i[0]-1, i[1]], threshold, rows-1, cols-1) and [i[0]-1, i[1]] not in memory:
                queue.append([i[0]-1, i[1]])
                memory.append([i[0]-1, i[1]])
                rst += 1
        return rst

50恐似、求1+2+3+...+n
由于不能用條件判斷和乘除法杜跷,只能想到遞歸

# -*- coding:utf-8 -*-
class Solution:
    def Sum_Solution(self, n):
        # write code here
        if n == 1: 
            return 1
        return n+self.Sum_Solution(n-1)
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矫夷,隨后出現的幾起案子葛闷,更是在濱河造成了極大的恐慌,老刑警劉巖双藕,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑趾,死亡現場離奇詭異,居然都是意外死亡忧陪,警方通過查閱死者的電腦和手機扣泊,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門近范,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人延蟹,你說我怎么就攤上這事评矩。” “怎么了阱飘?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵斥杜,是天一觀的道長。 經常有香客問我沥匈,道長蔗喂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任咐熙,我火速辦了婚禮弱恒,結果婚禮上,老公的妹妹穿的比我還像新娘棋恼。我一直安慰自己返弹,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布爪飘。 她就那樣靜靜地躺著义起,像睡著了一般。 火紅的嫁衣襯著肌膚如雪师崎。 梳的紋絲不亂的頭發(fā)上默终,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音犁罩,去河邊找鬼齐蔽。 笑死,一個胖子當著我的面吹牛床估,可吹牛的內容都是我干的含滴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼丐巫,長吁一口氣:“原來是場噩夢啊……” “哼谈况!你這毒婦竟也來了?” 一聲冷哼從身側響起递胧,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤碑韵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缎脾,有當地人在樹林里發(fā)現了一具尸體祝闻,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年遗菠,在試婚紗的時候發(fā)現自己被綠了治筒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屉栓。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡舷蒲,死狀恐怖耸袜,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情牲平,我是刑警寧澤堤框,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站纵柿,受9級特大地震影響蜈抓,放射性物質發(fā)生泄漏。R本人自食惡果不足惜昂儒,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一沟使、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渊跋,春花似錦腊嗡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒿囤,卻和暖如春客们,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背材诽。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工底挫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脸侥。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓建邓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湿痢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容