题目描述:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例: 输入: "Hello World"
输出: 5
思路:1.首先排除不是单词的输入;
2.其次让输入的字符串先用切片分隔开;
3. 反转字符串,从反转后的字符串的第一个元素开始遍历,遇到第一个空格结束,并输出长度
string = input("请输入包含大小写字母和空格的字符串:") #例如输入‘hello world’
if string == ' ' or not string: #如果输入为空或者只有空格,输出0
print(0)
else:
item_string = string.split(' ') #用切片经字符串以空格分开
#print(item_string) #输出是['hello', 'world']
print (len(item_string[::-1][0])) #先将列表反转['python', 'hello'],再遍历第一个元素的长度
牛牛有一个由小写字母组成的字符串s,在s中可能会有依稀字母重复出现;
但牛牛不喜欢重复,对于同一个字母,她只想保留第一次出现并删除掉后面出现的字母;
输入一个字符串s,s的长度 1 <= length <= 1000,s中的每个字符都是小写英文字母,请帮牛牛完成对s的操作 。
示例:输入:banana
输出:ban
思路:1.输入一个字符串s,再定义一个空字符串items用来装不重复的字符串
2.s的长度 1 <= length <= 1000,s中的每个字符都是小写英文字母,设置变量i如果不在items,则把变量i放入items
3.输出items
s = input("请输入字符串:")
items = " " #定义一个空字符串
if 1 <= len(s) <= 1000 and s.islower(): #字符串s的长度大于等于1小于等于100,且必须为小写
for i in s:
if i not in items:
items += i
print(items)
描述:
字符串的 for 循环
字符串的常用判别函数: isdigit()、isalpha()
分支流程控制
自学内容: sorted 内置方法实现排序
number=input('请输入字符串:')#输入数字
b=[]#定义b
c=[]#定义c
for i in number:#遍历其中所有数据
if i.isdigit():
b.append(int(i))#在数字尾部加上元素
elif i.isalpha():
c.append(str(i))#在字母尾部加上元素
b.sort()#将数字从小到大排列
c.sort()#将字母从a-z排列
d=[]
d=c+b#合并数字、字母两个列表
e = [str(j) for j in d]
f=''.join(e)#将列表中的元素拼接到一起
print(f)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
思路:
1.用一个嵌套循环把nums列表遍历两次
代码:
class Solution:
def twoSum(self,nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
#用len()方法取得nums列表的长度
n = len(nums)
#x取值从0一直到n(不包括n)
for x in range(n):
#y取值从x+1一直到n(不包括n)
#用x+1是减少不必要的循环,y的取值肯定是比x大
for y in range(x+1,n):
#假如 target-nums[x]的某个值存在于nums中
if nums[y] == target - nums[x]:
#返回x和y
return x,y
break
else:
continue
描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
length=len(nums)
count=0
for i in range(1,length):
if nums[count]!=nums[i]:
nums[count+1]=nums[i]
count+=1
return count+1
示例 1:
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
全部翻转:7 6 5 4 3 2 1 前k旋转:5 6 7 4 3 2 1 后k旋转:5 6 7 1 2 3 4
示例 2:
输入: [-1,-100,3,99] 和 k = 2
输出: [3,99,-1,-100]
解释:
向右旋转 1 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]
说明:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
要求使用空间复杂度为 O(1) 的 原地 算法。
思路:
1.三个翻转 , 整体翻转, 前k
翻转,后k
翻转
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
n = len(nums)
k %= n
nums[:] = nums[::-1]
nums[:k] = nums[:k][::-1]
#print(nums)
nums[k:] = nums[k:][::-1]
print(nums)
参考自https://blog.csdn.net/daidadeguaiguai/article/details/103393717