gpt4 book ai didi

javascript - Python - 如何将多重赋值更改为 JavaScript 语法并获得给定字符串的正确排列

转载 作者:行者123 更新时间:2023-12-01 02:25:54 25 4
gpt4 key购买 nike

我在搜索回溯时遇到了一些问题。首先,在下面链接的代码中,作为 JavaScript 程序员,我发现了一个相当奇怪的语法:

a[l], a[i] = a[i], a[l]

使用 this page 中的信息我发现它的意思是:“将 a[i] 分配给 a[l] 变量,并将 a[l] 分配给 >a[i] 变量”。我无法理解这个的用途。我认为这将是相同的值(value)观。如果您首先将值分配给 a[l],然后尝试获取 a[l],则它将是 a[i] ,对于两个变量。

<小时/>

这是一个Python代码,但是我想使用相同的原理将其转换为JavaScript。

# Python program to print all permutations with
# duplicates allowed

def toString(List):
return ''.join(List)

# Function to print permutations of string
# This function takes three parameters:
# 1. String
# 2. Starting index of the string
# 3. Ending index of the string.
def permute(a, l, r):
if l==r:
print toString(a)
else:
for i in xrange(l,r+1):
a[l], a[i] = a[i], a[l]
permute(a, l+1, r)
a[l], a[i] = a[i], a[l] # backtrack

# Driver program to test the above function
string = "aab"
n = len(string)
a = list(string)
permute(a, 0, n-1)

# This code is contributed by Bhavya Jain

您可以通过此链接访问 IDE:https://ide.geeksforgeeks.org/ASvO8MoGQr .

此代码的作用是获取字符串“aab”的排列值。

例如,使用“aab”作为第一个字符串,我们应该得到以下结果:aab阿坝阿布阿坝咩咩啊.

我尝试使用“JavaScript”并想出了这个:

let arr = [];

let permute = function(str, l, r) {
if (l === r) {
arr.push(str);
} else {
for (let i = l; i <= r; i++) {
str[l] = str[i];
str[i] = str[l];
permute(str, l + 1, r);
str[l] = str[i];
str[i] = str[l];
}
}
};

permute('aab', 0, 'aab'.length - 1);

console.log(arr);

我得到的结果是["aab", "aab", "aab", "aab", "aab", "aab"]

JSFiddle 链接:https://jsfiddle.net/xrfkt9qj/1/ .

<小时/>

编辑1我已经尝试过@jp_data_analysis答案,但它仍然返回不好的结果:https://jsfiddle.net/zurvm0xy/ .

EDIT2 脚本的 ES6 版本:https://jsfiddle.net/zurvm0xy/4/ .

<小时/>

这不是重复的,变量交换只是这个问题的第一部分。请阅读全文。

最佳答案

下面的代码 2 段代码具有相同的结果,假设值是不可变的。

Python 语法

a[i], a[j] = a[j], a[i]

常规语法

x = a[i]
y = a[j]

a[i] = y
a[j] = x

为什么有效

Python 首先计算右侧。请参阅Evaluation order 了解更多详情。

关于javascript - Python - 如何将多重赋值更改为 JavaScript 语法并获得给定字符串的正确排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48806037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com