首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Julia移位字符串

使用Julia移位字符串
EN

Stack Overflow用户
提问于 2020-12-03 03:06:06
回答 2查看 569关注 0票数 0

Hackerrank中的这个挑战是使用Julia(编程语言)移动字符串(并返回字符串。我有一个接受3个参数的函数。

shiftStrings("string",leftShifts,rightShifts)

左移:字符串的单次循环旋转,其中第一个字符成为最后一个字符,所有其他字符左移一个索引。例如,abcde在1次左移位后变为bcdea,在2次左移后变为cdeab。

右移:字符串的单次循环旋转,其中最后一个字符成为第一个字符,所有其他字符都向右移动。例如,abcde在1次右移后变为eabcd,在2次右移后变为deabc。

我只通过了13个测试用例中的3个。这是我的解决方案。请让我知道更好的解决方案。

请参考这个,他们已经用python How to shift characters in a string? - Hackerrank challenge完成了。

EN

回答 2

Stack Overflow用户

发布于 2020-12-03 05:43:50

如果你看一下你链接的问题,他们已经用python给出了答案。

代码语言:javascript
运行
复制
def getShiftedString(s, leftShifts, rightShifts):
    i = (leftShifts - rightShifts) % len(s)
    return s[i:] + s[:i]

如果你想把一个字符串先向右再向左移动,你只需要两者的不同。也就是说,如果你将3向右移动,3向左移动,就好像你什么都没有改变。左侧的"abcde" 3和右侧的-> "deabc" 3 -> "abcde"

因此,这会导致:

代码语言:javascript
运行
复制
function shiftStrings(str, l, r)
       i = mod(l - r, length(str))
       str[i+1:end] * str[1:i]
end

注意:

  • i是左移位的总数(取左移位的模减rightshifts)
  • Python索引从0开始,而[1:i]

索引从1开始,而如果l-r==0,则模数返回0,这就是[i+1:end]和Julia索引的原因

如果你有Utf8编码,那么你可以这样表述它:

代码语言:javascript
运行
复制
function shiftStrings(str, l, r)
       i = mod(l - r, length(str))
       indices = collect(eachindex(str))
       str[indices[i+1]:end] * str[1:indices[i]]
end

Utf8字符并不对应于每个字符1个字节,这就是字符索引与字符串索引不同的原因。(字符串索引从每个新字节开始,但是像德语"ö“这样的一些字符需要多于1个字节)

票数 0
EN

Stack Overflow用户

发布于 2021-04-22 23:50:29

函数getShiftedString(s,leftShifts,rightShifts)

代码语言:javascript
运行
复制
   len=length(s)
   lr=mod(leftShifts,len)
   rr=len-mod(rightShifts,len)
   
   ls1=SubString(s,lr+1,length(s))
   ls2=SubString(s,1,lr)
   ls=ls1*ls2 
   
   rs1=SubString(ls,rr+1,length(s))
   rs2=SubString(ls,1,rr)
   rs=rs1*rs2

结束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65114518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档