这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入:
package org.flhs;
import com.google.common.base.Strings;
/**
* Created with IntelliJ IDEA.
* User: cutter.li
* Date: 14-3-7
* Time: 下午3:10
* To change this template use File | Settings | File Templates.
*/
public class FLHSTest {
public static void main(String[] args) {
// changePosition("iloveyou", 5);
Object[] objArray= insertObjArrayInPosition(new Object[]{"a","b","hello"},new Object[]{"fuck","you"},3);
printArray(objArray);
}
private static void printArray(Object[] objArray) {
if(null!=objArray&&objArray.length>0)
{
for(Object obj:objArray)
{
System.out.print(obj+" , ");
}
}
}
//对指定位置前后的字符串的内容进行调换
public static void changePosition(String str, int position) {
String res = "";
if (Strings.isNullOrEmpty(str)) {
res = "改变的字符串为空";
} else {
int len = str.length();
if (position <= 0 || position >= len) {
res = str;
} else {
String preTxt = str.substring(0, position);
String remainTxt = str.substring(position, str.length());
res = remainTxt + preTxt;
}
}
System.out.println(res);
}
//数组在指定位置的插入
public static Object[] insertObjArrayInPosition(Object[] dest, Object[] source, int position) {
if (null == dest) {
return source;
}
if (null == source) {
return dest;
}
int destSize = dest.length;
int sourceSize = source.length;
Object[] resObjArray = new Object[destSize + sourceSize];
if (position <= 0) {
System.arraycopy(source, 0, resObjArray, 0, sourceSize);
System.arraycopy(dest , 0, resObjArray, sourceSize, destSize);
} else if (position > dest.length) {
System.arraycopy(dest, 0, resObjArray, 0, destSize);
System.arraycopy(source, 0, resObjArray, destSize, sourceSize);
} else {
System.arraycopy(dest, 0, resObjArray, 0, position);
System.arraycopy(source, 0, resObjArray, position, sourceSize);
System.arraycopy(dest, position, resObjArray, position+sourceSize, destSize - position);
}
return resObjArray;
}
}