这是问题所在:
功能名称:randomSentenceRedux
参数:
1.string - 要操纵的字符串对象
返回值:
一个转换后的字符串,其中原始句子中的单词是随机顺序。
测试用例:
>>>print randomSentenceRedux("My name is Sally Sue")
My is name Sue Sally
>>>print randomSentenceRedux("hello")
hello
>>>print randomSentenceRedux("Don't scream at me!")
Don't at scream me!
>>>
描述: 编写一个函数来随机化输入字符串字符串中单词的顺序并返回结果字符串。您可以假设单词由单个空格分隔。你不能使用python随机模块中的shuffle函数
答案 0 :(得分:2)
您应该查看维基百科关于Fisher-Yates shuffle的文章。它高效而简单。这是他们给出的伪代码:
To shuffle an array a of n elements:
for i from n - 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
转换为Python应该很容易。
答案 1 :(得分:1)
不确定Python语法是如何适合的,但是使用Java,你会在空格分隔符上标记化String,然后使用小于令牌数组长度的随机索引,并访问令牌数组的元素,弹出它,打印它,并重复,直到令牌数组为空。
答案 2 :(得分:1)
这是一个非常简单的算法:
您究竟需要哪些帮助?
<强>更新强>
改组算法
有更高级和更有效的改组算法,但这个简单的算法应该让你开始。
答案 3 :(得分:1)
关于改组 - 一个想法是遍历项目列表(for i in range(len(lst))
)和位置i
的每个元素,将其与随机元素交换(比如位置randrange(len(lst))
)
关于交换两个变量,请记住在Python中你可以a,b = b,a
这样做 - 而不是temp=a; a=b; b=temp
你必须用其他语言。
关于单词的分离,它就像strVar.split()
一样简单,重新组装就像' '.join(lst)
一样简单。
我没有包含确切的代码,因为这是一个家庭作业你应该做的工作......但是考虑到上述应该很容易,不是吗?