最近在看面试题的时候发现,一些基础的算法都记不住了,只是能大概说出个原理….为了加深记忆,这里对一些简单的算法题进行一个归纳。
下面的代码主要解决的问题是:给定一个字符串str和一个整数i,i代表字符串中某一个元素的下标,将str[0..i-1]移到这个元素的右侧,将str[i+1..len(str)-1]移到这个元素的左侧。(要求:时间复杂度为O(N),空间复杂度为O(1))
测试用例样例:
输入:”abcde”, 2
预期结果: decab
下面是Java实现:
/**
* Created by Flynnon on 17-2-27.
* 问题:给定一个字符串str和一个整数i,i代表字符串中某一个元素的下标,将str[0..i-1]移到这个元素的右侧,将str[i+1..len(str)-1]移到这个元素的左侧。
* 要求:时间复杂度为O(N),空间复杂度为O(1)
*/
public class Test {
/**
* 将一个数组以某一元素分界,将这个元素之前的部分与之后的部分互换位置
* 主要思路: 将之前的部分与之后的部分分别逆序,再将整体逆序即可
*