字符串偏移

package 算法;

import java.util.Arrays;
import java.util.Scanner;

public class 字符串偏移 {
    /*
     * param A: A string
     * param offset: Rotate string with offset.
     * return: Rotated string.
     */

	public static void main(String[] args) {
//		String str = "abcdefg";
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String str = sc.nextLine();
			char[]A=str.toCharArray();
			System.out.println(Arrays.toString(A));
			rotateString(A,2);
			System.out.println(Arrays.toString(A));
		}
		sc.close();

	}
    public static char[] rotateString(char[] A, int offset) {
        // wirte your code here
        //当偏移量为0或者字符数组为空时直接返回原字符数组
        if(offset==0||A.length==0){
            return A;
        }
        //当字符数组的长度小于偏移量时,先对其取余
        if(offset>A.length){
            offset =offset%A.length;
        }
        //将字符串分为两部分,将第一部分翻转
        for(int i = 0,j=A.length-1-offset;i<j;i++,j--){
            char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        //将第二部分翻转
        for(int i= A.length-offset,j=A.length-1;i<j;i++,j--){
             char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        //再将整个字符串翻转
        for(int i =0,j=A.length-1;i<j;i++,j--){
            char temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
        return A;
    }

};
时间: 2024-12-12 11:56:44

字符串偏移的相关文章

算法设计--字符串偏移

最近准备校招,找了些设计题练练,顺便记录. 问题描述:将字符串向右偏移给定的偏移量,如abcd,偏移量2,则得到cdab. 思路:第一感觉是和数组插入很像. 数组插入过程:n长数组在i位置插入元素ele,从n-1下标开始逆向迭代,覆盖其下一个元素 for(int it=n;it>i;it--){ arr[it]=arr[it-1]; } arr[i]=ele; so,整理下思路,Java实现如下: private static void shift(String s,int offset){//

Redis字符串类型相关操作命令

string是redis最基本的类型,可以包括任何类型数据,如jpg图片或者序列化对象. 单个value1最大上限是1G字节 如果只使用string类型,redis就可以被看做具有持久化特性的memcache set key value [ex 过期时间秒数]|[px 过期时间毫秒数] [nx]|[xx] 设置一个key的值,默认value的类型为stringex,px过期时间,如果同时设置以后面的为准,如set name zhangsan ex 10 px 3000,则以后面的时间为准即3秒n

MySQL动态字符串处理DYNAMIC_STRING

MySQL中,常常会看到一些关于动态字符串的处理,列如:DYNAMIC_STRING. 为了记录动态字符串的实际长度,缓冲区的最大长度,以及每次字符串需要调整时,及时分配新的内存,以及调整长度.MySQL使用了DYNAMIC_STRING来保存动态字符串相关的信息: typedef struct st_dynamic_string { char *str; size_t length, max_length, alloc_increment; } DYNAMIC_STRING; 在这个结构体中,

MFC中浏览文件和浏览目录的实现[转]

1. 浏览文件 1 void CDlgCompare::OnBnClickedBtnSel() 2 { 3 // TODO: Add your control notification handler code here 4 UpdateData(TRUE); 5 CFileDialog fileDlg(TRUE); 6 fileDlg.m_ofn.lpstrTitle="文件打开对话框"; 7 fileDlg.m_ofn.lpstrFilter="All Files(*.*

手把手教你解析Resources.arsc

http://blog.csdn.net/beyond702/article/details/51744082 一.前言 对于APK里面的Resources.arsc文件大家应该都知道是干什么的(不知道的请看我的另一篇文章Android应用程序资源文件的编译和打包原理),它实际上就是App的资源索引表.下面我会结合实例对它的格式做一下剖析,读完这篇文章应该能够知道Resources.arsc的格式,并可以从二进制的文件中查找到资源的相关信息,或者根据资源的id可以定位到二进制文件中的位置.不过本

【PHP】PHP5.4.0版本ChangeLog详解(上)

前言 随着大量的框架使用composer和namespace,渐渐的线上环境也从之前的5.3变成了5.4或者5.5甚至5.6,随着7月份PHP7的发布,会有更多的公司采用新版本. 之前好久就想写这样的一片文章,来说明下各个版本的差异,这次算是拿出时间了. 这次的是第一篇,目前规划写三篇 PHP5.4.0 PHP5.5.0 PHP5.6.0 一方面是对自己的知识的整理,一方面是对自己的一次提升. 官方说明 官方文档地址 http://php.net/ChangeLog-5.php#5.4.0 详细

教你一步一步实现图标无缝变形切换

我的简书同步发布:教你一步一步实现图标无缝变形切换 ?欢迎打赏? 转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001] 本来这篇文章几天前就应该写好并发布出来的,由于要写小论文,被导师劈头盖脸的骂了几天,一直在搞论文,耽误了博文的编写.今天终于把小论文给投出去了,终于可以好好写博客了! 在上一篇文章<酷炫的Activity切换动画,打造更好的用户体验 >中,我们感受到了过渡切换动画带来的不一样的用户体验.如何你还意犹未尽,那么今天我

Android逆向之旅---解析编译之后的Resource.arsc文件格式

一.前言 快过年了,先提前祝贺大家新年快乐,这篇文章也是今年最后一篇了.今天我们继续来看逆向的相关知识,前篇文章中我们介绍了如何解析Android中编译之后的AndroidManifest.xml文件格式:http://blog.csdn.net/jiangwei0910410003/article/details/50568487 当时我说到其实后续还要继续介绍两个文件一个是resource.arsc和classes.dex,今天我们就来看看resource.arsc文件个格式解析,class

基于 CoreText 的排版引擎

本章前言 使用 CoreText 技术,我们可以对富文本进行复杂的排版.经过一些简单的扩展,我们还可以实现对于图片,链接的点击效果.CoreText 技术相对于 UIWebView,有着更少的内存占用,以及可以在后台渲染的优点,非常适合用于内容的排版工作. 本章我们将从最基本的开始,一步一步完成一个支持图文混排.支持图片和链接点击的排版引擎. CoreText 简介 CoreText 是用于处理文字和字体的底层技术.它直接和 Core Graphics(又被称为 Quartz)打交道.Quart