題目1
統(tǒng)計字符串中的單詞個數(shù),這里的單詞指的是連續(xù)的不是空格的字符莫换。
請注意霞玄,你可以假定字符串里不包括任何不可打印的字符骤铃。
示例:
輸入: "Hello, my name is John"
輸出: 5
解答
class Solution(object):
def countSegments(self, s):
"""
:type s: str
:rtype: int
"""
return len(s.split())
split()函數(shù)可以分割任何符號坷剧,包括逗號,句號惫企,什么亂七八糟的符號。相比較來說狞尔,其他語言可沒有這么簡潔的用法。
題目2
給定一個 n 個元素有序的(升序)整型數(shù)組 nums 和一個目標值 target 沪么,寫一個函數(shù)搜索 nums 中的 target,如果目標值存在返回下標禽车,否則返回 -1。
示例 1:
輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現(xiàn)在 nums 中并且下標為 4
示例 2:
輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中因此返回 -1
提示:
- 你可以假設(shè) nums 中的所有元素是不重復(fù)的州胳。
- n 將在 [1, 10000]之間。
- nums 的每個元素都將在 [-9999, 9999]之間栓撞。
解答
剛開始我沒有看見題目碗硬,自己一看這么簡單瓤湘,順手就寫了
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if target in nums:
return nums.index(target)
else:
return -1
寫完之后我覺得不對恩尾,再看看題目,說的是二分查找翰意。所謂二分查找就是把列表一分為二,在左右兩邊查找醒第,確定元素區(qū)間之后再次一分為二,直至確定元素稠曼。
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left, right = 0, len(nums)-1
while (left <= right):
mid = (left+right) // 2
if nums[mid] == target:
return mid
elif nums[mid] > target:
right = mid -1
else:
left = mid + 1
return -1
這才是這道題要考察的二分查找堤如。
查看執(zhí)行結(jié)果36ms蒲列。