java 取字符串 左边_java – 将字符串中的字符向左移动

我是Stack Overflow的新手,我对一个一直在逃避我的编程课有一个实验室问题.问题要求我们将字符串s的元素向左移动k次.例如,如果输入是“Hello World”和3,则输出“lo WorldHel”).对于非常大的k值,它还必须相对有效地工作.这是我到目前为止:

String cyclicLeftShift(String s, int k){

String result="";

for(int i=0;i

result = s.substring(1, s.length() - 1) +s.charAt(0);

s=result;

}

return s;

}

我的主要问题是原始字符串的最后一个字符不断被循环的后续迭代覆盖.我已经尝试了大量的排列,包括将整个事物转换为数组(这违反了原始问题中的效率限制).我觉得有一件小事我没有得到,我想知道是否有人可以给我一个正确方向的推动?

谢谢!

解决方法:

你想要的是在位置k处拆分字符串并将两个部分再次合并在一起,但顺序相反.

主要问题是k可能大于或等于字符串的大小.所以你需要再次将k带入有效范围.

public static String cyclicLeftShift(String s, int k){

k = k%s.length();

return s.substring(k) + s.substring(0, k);

}

测试方法:

public static void main(String[] args)

{

String test = "Hello World";

for(int i = 0; i < test.length()*3; i++)

System.out.println(cyclicLeftShift(test, i));

}

输出:

Hello World

ello WorldH

llo WorldHe

lo WorldHel

o WorldHell

WorldHello

WorldHello

orldHello W

rldHello Wo

ldHello Wor

dHello Worl

Hello World

ello WorldH

llo WorldHe

lo WorldHel

o WorldHell

WorldHello

WorldHello

orldHello W

rldHello Wo

ldHello Wor

dHello Worl

Hello World

ello WorldH

llo WorldHe

lo WorldHel

o WorldHell

WorldHello

WorldHello

orldHello W

rldHello Wo

ldHello Wor

dHello Worl

标签:java

来源: https://codeday.me/bug/20190727/1556986.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值