逆序字符串(二)

题意

给定字符类型的数组chas和一个整数size,把整体为size的左半区移到右半区去
举个例子
ABCDE size=3,这样的话结果为DEABC


图片.png

实现的代码如下:

    public static void f(String str,int size)
    {
        char[] chas=str.toCharArray();
        rotote(chas,0, size-1);
        rotote(chas,size,chas.length-1);
        rotote(chas,0,chas.length-1);
        System.out.println(String.valueOf(chas));
    }

其中的rotote是逆序字符串(一)中的函数,实现起来非常简单

解法2

叙述起来较为复杂,我们通过图来描述


图片.png

首先我们来看看如何实现整体的交换的
我们先来想想要传入哪些参数
start end来限定整个子数组,size来表示整个需要交换的子数组的长度
像 1 2 3 4 5 6 7 A B C D 需要交换的就是ABCD和1234所以size是4
有了这些,我现在就开始来实现代码

public static void f(char[] chas,int start,int end,int size)
{
       int i=end-size+1;//取得A对应的位置
       while(size--!=0)//执行size次
       {
            //交换i和start位置的元素
            i++;start++;
       }
}

然后就是我们的核心函数

public static void f(String str,int size)
    {
        if(str==null||str.length()==0)
        {
            return;
        }
        char[] chas=str.toCharArray();
        int start=0;
        int end=chas.length-1;
        int lpart=size;
        int rpart=chas.length-size;
        int s=Math.min(lpart,rpart);
        int d=lpart-rpart;
        while(true)
        {
            exchange(chas,start,end, s);
            if(d>0)
            {
                start+=s;
                lpart=d;
            }else if(d<0)
            {
                end-=s;
                rpart=-d;
            }else
            {
                break;
            }
            s=Math.min(lpart,rpart);
            d=lpart-rpart;
        }
        System.out.println(String.valueOf(chas));
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,694评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,621评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,530评论 1 32
  • 别自视清高 天外有天,人上有人,谦卑是一种态度,更是一种修养。摆正自己的位置,权力是一时的,金钱是身外的,身体是自...
    大海168阅读 312评论 0 0
  • CNBLUEone阅读 334评论 0 0

友情链接更多精彩内容