我发现了这个挑战:
使用您的语言,使用函数LetterChanges(str)获取传递的str参数并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表后面的字母(即c变为d,z变为a)。然后大写这个新字符串(a,e,i,o,u)中的每个元音,最后返回这个修改后的字符串。
我是朱莉娅的新人,我在挑战中挑战自我。我在Julia lang中发现了这个挑战,我找不到解决方案。
这里我尝试以下面的方式解决,但是我得到了错误:x值未定义
你会如何解决这个问题?
function LetterChanges(stringis::AbstractString)
alphabet = "abcdefghijklmnopqrstuvwxyz"
vohels = "aeiou"
for Char(x) in split(stringis, "")
if x == 'z'
x = 'a'
elseif x in vohels
uppercase(x)
else
Int(x)+1
Char(x)
println(x)
end
end
end
谢谢
答案 0 :(得分:2)
存在逻辑错误。它说“将字母表中的每个字母替换为字母表后面的字母。然后将这个新字符串中的每个元音大写”。您的代码检查,如果它是元音。然后它将其大写或替换它。这是不同的行为。您必须先替换然后检查它是否是元音。
您正在将'a'替换为'Z'。你应该用'a'替换'z'
函数split(stringis, "")
返回一个字符串数组。您无法将这些字符串存储在Char(x)
中。您必须将它们存储在x
中,然后您可以使用c = x[1]
将这些字符串转换为char。
转换字符后,您必须将其存储在变量c = uppercase(c)
您不需要将char转换为int。您可以向字符添加数字:c = c + 1
您必须将新字符存储在字符串中并将其返回。
function LetterChanges(stringis::AbstractString)
# some code
str = ""
for x in split(stringis, "")
c = x[1]
# logic
str = "$str$c"
end
return str
end
答案 1 :(得分:2)
作为旁注: 建议的解决方案正常工作。但是,如果您需要高性能(可能没有给出问题的根源),使用字符串构建器会更有效:
function LetterChanges2(str::AbstractString)
v = Set("aeiou")
#sprint(sizehint=sizeof(str)) do io # use on Julia 0.7 - new keyword argument
sprint() do io # use on Julia 0.6.2
for c in str
c = c == 'z' ? 'a' : c+1 # we assume that we got only letters from 'a':'z'
print(io, c in v ? uppercase(c) : c)
end
end
end
它比上面快了10倍。
编辑:对于Julia 0.7来说这有点快:
function LetterChanges2(str::AbstractString)
v = BitSet(collect(Int,"aeiouy"))
sprint(sizehint=sizeof(str)) do io # use on Julia 0.7 - new keyword argument
for c in str
c = c == 'z' ? 'a' : c+1 # we assume that we got only letters from 'a':'z'
write(io, Int(c) in v ? uppercase(c) : c)
end
end
end
答案 2 :(得分:2)
这里的另一个版本比@ BogumilKaminski在版本0.6上的回答快一点,但在0.7上可能会有所不同。另一方面,它可能比public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home)
{
onBackPressed();
return true;
}
else
{
return super.onOptionsItemSelected(item);
}
}
- 块魔法少一点吓人;)
do
答案 3 :(得分:1)
冒着被指控作弊的风险,这是一种基于字典的方法:
'a'=>'b'
对于长字符串(例如100,000个字符),似乎在速度方面与其他Julia 0.6方法相比较。在构造字典时有一些不必要的开销,这在小字符串上是显而易见的,但是我太懒了,不能长时间地输入Depends: cubature (>= 1.3-11)
构造!