左旋转字符串

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
输入:
多组测试数据,每个测试数据包含一个字符序列S和非负整数K。其中S的长度不超过1000。
输出:

对应每个测试案例,输出新序列。


用3次翻转就能实现(很简单的思路),下面给出java的代码

/**
	 * 
	 * @param a
	 * @param b
	 */
	private static String Swap(String change,int start,int end){
		char[] arrayChar=change.toCharArray();//得到字符char[]
		while(start<end){//按照顺序交换从start到end之间的字符
			char temp=arrayChar[start];
			arrayChar[start]=arrayChar[end];
			arrayChar[end]=temp;
			start++;
			end--;
			
		}
		return String.valueOf(arrayChar);
			
	}
	
	/**
	 * 
	 * @param str  要翻转的字符串
	 * @param k  序列
	 * @return
	 */
	private static String ROLString(String str,int k){
		if(k<=0||str==null||str.length()==0||k>=str.length()){
			return null;
		}
		
		String first=Swap(str, 0, k-1);//第一次翻转左边的字符
		System.out.println(first);
		String second=Swap(first, k, str.length()-1);//翻转右边的字符
		System.out.println(second);
		String third=Swap(second, 0, str.length()-1);//翻转全部
		System.out.println(third);
		
		return third;
	}
	
相关文章
相关标签/搜索