java – 将字符串中的字符向左移动
发布时间:2020-12-15 04:30:48 所属栏目:Java 来源:网络整理
导读:我是Stack Overflow的新手,我对一个一直在逃避我的编程课有一个实验室问题.问题要求我们将字符串s的元素向左移动k次.例如,如果输入是“Hello World”和3,则输出“lo WorldHel”).对于非常大的k值,它还必须相对有效地工作.这是我到目前为止: String cyclicLe
我是Stack Overflow的新手,我对一个一直在逃避我的编程课有一个实验室问题.问题要求我们将字符串s的元素向左移动k次.例如,如果输入是“Hello World”和3,则输出“lo WorldHel”).对于非常大的k值,它还必须相对有效地工作.这是我到目前为止:
String cyclicLeftShift(String s,int k){ String result=""; for(int i=0;i<k;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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |