我是用while循环实现的,但我想知道是否有一种方法可以用for循环来实现。我试着把这些写清楚,这样我就可以把它写在白板上,让人们理解。
var str = "Have a nice day"
func unique(_ str: String) -> String {
var firstIndex = str.startIndex
while (firstIndex != str.endIndex) {
var secondIndex = str.index(after: firstIndex)
while (secondIndex != str.endIndex) {
if (str[firstIndex] == str[secondIndex]) {
return "Not all characters are unique"
}
secondIndex = str.index(after: secondIndex)
}
firstIndex = str.index(after: firstIndex)
}
return "All the characters are unique"
}
print("\(unique(str))")
9条答案
按热度按时间fykwrbwg1#
您可以使用字符的索引:
lawou6xi2#
我用了一个散列来做。不知道它有多快,但它不需要在我的情况下。(在我的例子中,我正在处理电话号码,所以我先去掉破折号)
。。。或者更紧凑,作为延伸。。
zu0ti5jz3#
这是你的问题的for循环版本。
有很多方法可以实现这一点,这只是其中一种方法。
iqih9akk4#
正如@adev所说,有很多方法可以完成这一点。例如,你可以只使用一个for循环和一个字典来检查字符串是否唯一:
p5fdfcr15#
你可以找到任何值的字符多少次写在字符串对象。
rfbsl7qr6#
这是我的解决方案
vxqlmq5t7#
7ivaypg98#
afdcj2ne9#
等值线图
等值线图是其中没有一个字母重复的单词/短语,即所有字母都是唯一的。下面的算法比较小写字符,忽略单词之间的空格。
下面是我的代码: