我正在解决一个算法问题,我同时使用 Python 和 Swift 来解决它。在 python 中,我可以使用 for else 语法轻松解决它。但是在 Swift 中,我正在努力寻找一种类似于 python 的 for else 语法的方法。
这是算法问题,它可以帮助您理解我在做什么。
给定一个字符串数组words,找到length(word[i]) * length(word[j]) 的最大值,其中两个单词不共享共同的字母。您可以假设每个单词只包含小写字母。如果不存在这样的两个词,则返回 0。
示例 1:给定 ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]
返回 16
这两个词可以是“abcw”、“xtfn”。
示例 2:给定 ["a", "ab", "abc", "d", "cd", "bcd", "abcd"]
返回 4
这两个词可以是“ab”、“cd”。
示例 3:给定 ["a", "aa", "aaa", "aaaa"]
返回 0
没有这样的一对词。
这是我的两组代码。
Python代码有效。
class Solution(object):
def maxProduct(self, words):
maximum = 0
while words:
currentWord = set(words[0])
current_length = len(words[0])
words = words[1:]
for ele in words:
for char in currentWord:
if char in ele:
break
else:
maximum = max(maximum,current_length*len(ele))
return maximum
快速代码效果不佳。
class Solution
{
func maxProduct(words: [String]) -> Int
{
var input = words
let length = input.count
var maximum = 0
while input.count != 0
{
let cur_word = Set(input[0].characters)
let cur_length = input[0].characters.count
input = Array(input[1..<length])
for item in input
{
for char in item.characters
{
if cur_word.contains(char)
{
break
}
}
// how add a control follow here? if cur_word does not share same character with item, then does the below max statement
//else
//{
maximum = max(maximum,cur_length*(item.characters.count))
//}
}
}
return maximum
}
}