【发布时间】:2022-01-16 18:21:12
【问题描述】:
我试图通过在 Int 范围内比较它们来计算两个字符串中的相同元素。我解决了下标问题,但我现在得到了一个“额外”元素。这是我的代码:
func getResult(s: String, k: Int, stringGoal: String) -> Int {
var identiticalSymbols = 0
var deletionsLimit = k
var string = s
if string.count <= 19, deletionsLimit <= 9{
for i in 0...string.count-1 {
if string[i] == stringGoal[i] {
identiticalSymbols += i
}
else {
string.remove(at: String.Index(utf16Offset: i, in: string))
deletionsLimit -= 1
}
}
}
return identiticalSymbols
}
}
extension String {
subscript(_ i: Int) -> String {
let idx1 = index(startIndex, offsetBy: i)
return String(self[idx1..<endIndex])
}
subscript (r: Range<Int>) -> String {
let start = index(startIndex, offsetBy: r.lowerBound)
let end = index(startIndex, offsetBy: r.upperBound)
return String(self[start ..< end])
}
}
我的意见:
let result = getResult(s: "agdd", k: 4, stringGoal: "gdd")
s是初始字符串,k是删除限制,goalString是比较字符串。
我得到了 6 个相同的符号,而不是 3 个
【问题讨论】:
-
什么是
s?k是什么?stringGoal是什么?您需要包含这些才能拥有minimal reproducible example。 -
@jnpdx k为删除限制,s为初始字符串,stringGoal为比较字符串。它们是函数参数,这就是我初始化新属性的原因
-
你能给出输入和预期输出吗?
-
@cristian_064 完成
-
您说“我试图通过在 Int 范围内比较它们来计算两个字符串中的相同元素......”这是什么意思?删除限制?嗯?根本不清楚您要计算什么。您需要解释清楚,我们才能帮助您实施。