我用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))")
7条答案
按热度按时间6pp0gazn1#
您可以使用字符的索引:
o2rvlv0m2#
我用了一个哈希函数。不知道它有多快,但在我的情况下不需要。(在我的情况下,我正在处理电话号码,所以我先去掉破折号)
...或更紧凑,作为扩展...
puruo6ea3#
下面是你的问题的for循环版本。
有很多方法可以实现这一点,这只是其中一种方法。
30byixjq4#
正如@adev所说,有很多方法可以完成这一步,比如,你可以只使用一个for循环和一个字典来检查字符串是否是唯一的:
jfgube3f5#
你可以在字符串对象中找到任意值char的多少次写入。
bmvo0sr56#
这是我解决方案
vwhgwdsa7#