public class LeftRotateString {
/**
* Q 26 左旋转字符串
* 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
* 如把字符串abcdef左旋转2位得到字符串cdefab。
* 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
*/
public static void main(String[] args) {
String data = "abcdef";
String re = leftRotateString(data, 2);
System.out.println(re);
}
/*
* abcdef->ab.cdef->ba.fedc->cdefab
*/
public static String leftRotateString(String str, int n) {
if (str == null || str.length() == 0) {
return str;
}
if (n <= 0 || n >= str.length()) {
return str;
}
int begin = 0;
int end = str.length() - 1;
char[] letters = str.toCharArray();
reverseString(letters, begin, n - 1);
reverseString(letters, n, end);
reverseString(letters, begin, end);
return new String(letters);
}
// public static String reverseString(String str,int begin,int end){
public static String reverseString(char[] letters, int begin, int end) {
/*
* of course we can do it like this: StringBuilder sb=new
* StringBuilder(str); sb.reverse().toString(); but we are learning
* algorithm so let's 'reinvent the wheel'.
*/
if (begin >= end) {
return null;
}
for (int i = begin, j = end; i < j; i++, j--) {
char tmp = letters[i];
letters[i] = letters[j];
letters[j] = tmp;
}
return new String(letters);
}
}
分享到:
相关推荐
面试题58 - II. 左旋转字符串题目链接面试题58 - II. 左旋转字符串题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是
面试题58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋
左旋转字符串.md
python 实现 左旋转字符串
示例 1:示例 2:输出: "umghlrlose"C 语言 for 循环,每次左旋第一位 长度为 5 的字符串 左旋 3 位和左旋 8 位结果相同 需要考虑左
左旋转字符串 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。 要求时间对长度为 n 的字符串操作的...
比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"实验平台:牛客网解决思路:题一的解题思路:题一用了2种方式,第一种j
笔试面试中,经常考到的 字符串左旋,即abcdef->cdefab
主要为大家详细介绍了java实现左旋转字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。 示例 1: ...
带平衡条件的二叉树,实现了平衡二叉树,左旋,右旋等等。
1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 1.暴力移位法 #include #include #include void left_move(char*str, int k) { int len = 0; int i = 0...
示例 1:示例 2:bool rotateString(string A, string B) {i++)//每次左旋一个 旋转 len 次 其中如果相等返回t
2021-2027中国左旋沙丁胺醇市场现状及未来发展趋势
电子政务-右旋左旋水力风力隔板引水引风发电装置.zip
电子政务-右旋左旋水导风导水力配重发电提水装置.zip
电子政务-多管道右旋左旋引水引风发电系统装置.zip
--单旋转(左旋和右旋) (都已有序) --双旋转(左右旋和右左旋) 每插入一个新节点时,AVL树中相关节点的平衡状态会发生改变。因此,在插入一个新节点后,需要从插入位置沿着通向根的路径回溯,检查各节点的平衡因子...