当前位置:   article > 正文

程序设计实践(2)Python进阶例题_编写一个函数,接受一个字符串作为参数,将字符串中的每个单词进行反转,并返回反转

编写一个函数,接受一个字符串作为参数,将字符串中的每个单词进行反转,并返回反转

1.字符反转

题目再现

描述

编写一个函数,接受一个字符串作为参数,将字符串中的每个单词进行反转,并返回反转后的字符串。

假设字符串中的单词由空格分隔。

输入

输入一个字符串

输出

输出反转后的字符串

输入样例 1 

Hello World

输出样例 1

olleH dlroW

初始思路

仅需对每一个单词进行逆序输出即可。只是【把单词根据空格分开】和【逆序输出】两个小知识点需要学习一下。

分割split(),括号中可填入分割的标识,如这里cur.split()则表示按空字符分割,cur.split(",")则表示按逗号分割。当然原来的是字符串,分割后仍然要存在一个字符串中。如果参数有数字,则表示分割的次数。

逆序输出s[::-1],这只是一个顺序完全相反的新列表或字符串,原列表或字符串的内容并没有改变,要存的话要新建一个变量来存。

代码实现

  1. def roll_back(cur):
  2. words = cur.split() # split input on whitespace
  3. for word in words:
  4. print(word[::-1],end=' ') # reverse the word and print it
  5. cur = input()
  6. roll_back(cur)

2.重复元素

题目再现

描述

编写一个函数,接受一个列表作为参数,返回列表中所有重复的元素。

输入

输入一行列表里的元素,元素之间是空格隔开的

输出

列表中所有重复的元素

输入样例 1 

1 2 3 2 4 5 3

输出样例 1

2 3

提示

注意元素有可能不止是number

初步思路

首先注意到元素可能是任何数据类型,因为python的输入都是按照字符串进行处理,我们姑且按照字符串作为元素进行编写。同样也是先spilt()这行字符串,把元素存在一个列表中,然后用一个字典记录每一个单词出现的次数,然后还需要把重复的元素记录下来。也就是说,我们需要两个列表和一个字典。最后用join把新列表输出即可。

代码实现

  1. array = input().split()
  2. counts = {}
  3. duplicates = []
  4. for elements in array:
  5. counts[elements] = counts.get(elements, 0)+1
  6. if counts[elements] > 1 and elements not in duplicates:
  7. duplicates.append(elements)
  8. print(" ".join(duplicates))

3.唯一路径数

题目再现

描述

编写一个函数,接受两个正整数 m 和 n 作为参数,计算从网格的左上角到右下角的所有唯一路径数。

比如:m = 3, n = 2输出示例:3(可以通过向右、向右、向下的顺序到达右下角)

输入

输入两个正整数m和n
 

输出

输出由m行n列组成网格的左上角到右下角的唯一路径数

输入样例 1 

3 2

输出样例 1

3

初步思路

其实也可以类似于递归那样子的算法,因为唯一路径从(0,0)到(m,n)的话一定是向右走m步、向下走n步。从最后一步开始推的话,以向下、向右为正方向,一定是【从(m-1,n)向下走了一步】或者是【从(m,n-1)向右走了一步】,因此到(m,n)的路径数是到(m-1,n)和(m,n-1)的路径数之和。而一直推到最初,从(0,0)到(0,0)只有一种路径,因此可以使用这样的递归算法。

代码实现

  1. def uniquePaths(m, n):
  2. dp = [[0] * n for _ in range(m)]
  3. for i in range(m):
  4. for j in range(n):
  5. if i == 0 and j == 0:
  6. dp[i][j] = 1 #原点到原点只有一种路径
  7. elif i == 0:
  8. dp[i][j] = dp[i][j - 1]
  9. elif j == 0:
  10. dp[i][j] = dp[i - 1][j] #如果仍有一个坐标为零,那一定是沿着坐标线走的
  11. else:
  12. dp[i][j] = dp[i - 1][j] + dp[i][j - 1] #从左边和从上边来两种情况
  13. return dp[m - 1][n - 1]
  14. m, n = map(int, input().split())
  15. print(uniquePaths(m, n))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/521746
推荐阅读
相关标签
  

闽ICP备14008679号