題目來源:
https://leetcode.com/problems/length-of-last-word/description/
題目分析:
本題是給定我們一個字符串,讓我們返回最後一個非空字符的長度,需要注意空格也算是一個字符。當時我考慮的時候是想從頭開始遍歷,用sheng來存儲遍歷的非空字符,遇到空格,則sheng='',從頭開始計數。這時我沒有考慮到最後一個非空字符後可以有多個空格,此時會返回‘’而非正確的結果。看到其他人的想法才覺得。。。果然思維很重要。有的人是這樣想的。從最後開始遍歷,當遇到第一個非空字符時開始計數,到遇到空字符時停止計數。
此時我寫的代碼爲:
class Solution:
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
s=s[::-1];count=0;i=0
if(len(s)==0):
return 0
else:
while((i<=(len(s)-1))and (s[i]==' ')):%%這裏需要注意要時刻注意i不要超過下標的界限,並且要把它放在and前面先進行比較
i += 1
while((i<=(len(s)-1))and(s[i]!=' ')):
count = count + 1
i = i+1
return count
然後還有人用到了split函數,可以預防下標出界的問題,也可以使程序更簡單運行更快。
下面先來介紹一下split函數。
描述
Python split()通過指定分隔符對字符串進行切片,如果參數num 有指定值,則僅分隔 num 個子字符串語法
split()方法語法:str.split(str="", num=string.count(str)).
參數
str -- 分隔符,默認爲所有的空字符,包括空格、換行(\n)、製表符(\t)等。num -- 分割次數。
返回值
返回分割後的字符串列表。
實例
以下實例展示了split()函數的使用方法:#!/usr/bin/python
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );
print str.split(' ', 1 );
以上實例輸出結果如下:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
再來介紹一下strip()函數
描述
Python strip() 方法用於移除字符串頭尾指定的字符(默認爲空格)。語法
strip()方法語法:str.strip([chars]);
參數
chars -- 移除字符串頭尾指定的字符。返回值
返回移除字符串頭尾指定的字符生成的新字符串。
實例
以下實例展示了strip()函數的使用方法:實例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = "0000000 Runoob 0000000";
print str.strip( '0' ); # 去除首尾字符 0
str2 = " Runoob "; # 去除首尾空格
print str2.strip();
以上實例輸出結果如下:
Runoob
Runoob
則此時的代碼可以寫成:
class Solution:
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
s=s[::-1]
s=s.strip().split(' ')
return len(s[0])