zoukankan      html  css  js  c++  java
  • N43_左旋转字符串

    题目描述

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
    package new_offer;
    /**
     * 汇编语言中有一种移位指令叫做循环左移(ROL),
     * 现在有个简单的任务,就是用字符串模拟这个指令的运算结果。
     * 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。
     * 例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,
     * 即“XYZdefabc”。是不是很简单?OK,搞定它!
     * @author Sonya
     *照剑指offer书上的方法,两次翻转字符串。
     */
    public class N43_LeftRotateString {
    	
    	public String LeftRotateString(String str,int n) {
    			char[] chars = str.toCharArray();        
    	        if(chars.length < n) return "";
    			reverse(chars, 0, n-1);
    			reverse(chars, n, chars.length-1);
    			reverse(chars, 0, chars.length-1);
    			StringBuilder sb = new StringBuilder(chars.length);
    			for(char c:chars){
    			     sb.append(c);
    			     }
    		   return sb.toString();
    		
    	        
    	    }
        public void reverse(char []ch,int low,int high) {
        	char temp;
        	while(high>low) {
        		temp=ch[low];
        		ch[low]=ch[high];
        		ch[high]=temp;
        		high--;
        		low++;
        	}
        }
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

      

  • 相关阅读:
    PHP 抽象类
    PHP使用rabbitmq发邮件简单使用
    自定义Chrome插件Vimium
    用Paint Tool SAI绘制漫画
    AutoHotkey 使用笔记
    Unity 性能
    VS2015解决非Unicode编码包含中文字段无法编译的问题
    高DPI设置时禁用显示的方法
    Excel 统计在某个区间内数值的个数
    自定义宏把Word打造成全快捷键编辑器
  • 原文地址:https://www.cnblogs.com/kexiblog/p/11188779.html
Copyright © 2011-2022 走看看