我正在解决算法问题,我使用Python和Swift来解决它。在python中,我可以使用for else语法轻松解决它。但是在Swift中,我很难找到类似于python的for else语法的方法。
这是算法问题,它可以帮助您理解我在做什么。
给定一个字符串数组字,找到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
}
}
答案 0 :(得分:0)
如果调用injectScriptFile(view, "gif_freezer.js");
view.loadUrl("javascript:freezeAllGifs();");
,您可以引入一个标记来记录。声明
break
与
相同for a in b:
if c(a):
break
else:
d()
但请注意,您根本不需要found = False
for a in b:
if c(a):
found = True
break
if not found:
d()
循环,因为您可以使用Set.isDisjointWith(_:)
method。
for char in item.characters
(在Swift 3上,此方法为renamed to Set.isDisjoint(with:)
)
答案 1 :(得分:0)
我想分享一下我的答案。感谢Kennytm的帮助。
class Solution
{
func maxProduct(words: [String]) -> Int
{
var input = words
var 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])
length -= 1
for item in input
{
if cur_word.isDisjointWith(item.characters)
{
maximum = max(maximum, cur_length*(item.characters.count))
}
}
}
return maximum
}
}