美文网首页
逆序字符串(二)

逆序字符串(二)

作者: chengcongyue | 来源:发表于2019-04-10 19:58 被阅读0次

题意

给定字符类型的数组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));
    }

相关文章

  • 逆序字符串(二)

    题意 给定字符类型的数组chas和一个整数size,把整体为size的左半区移到右半区去举个例子ABCDE siz...

  • 语法基础题

    列表排序: 字符串逆序

  • 使用递归实现字符串逆序

    使用递归实现字符串逆序 以下代码可以实现字符串逆序输出: 比如执行方法reverse("abcde");,会返回结...

  • C语言练习题之字符串的逆序输出

    字符串的逆序输出: 给定字符串ABCDEF,编写合适的代码,使之逆序输出为FEDCBA。 对于C语言中的字符串,g...

  • Python挑战100题(1~10)

    1、字符串逆序 题目:给你一个字符串 a, 请你输出逆序之后的a。例如:a=‘xydz’则输出:zdyx答:最简单...

  • 算法每日一题之Day-1

    1.数组逆序排列(反转字符串) 上代码

  • 挑战Python题解-003

    3.给你一个字符串 a, 如a=‘12345’,对a进行逆序输出a。 解法一:切片 解法二:转化成列表倒序+字符串...

  • Swift小知识点

    逆序遍历数组 把字符或者字符串转成整型

  • 算法笔记

    字母的大小写转换方法 字符串转化 方法一 方法二 方法三 字符串转换为数组 逆序输出 保留小数点后几位 方法一:使...

  • [LeetCode By Python] 345. Revers

    一、题目 二、解题 输入一个字符串,如果是元音字母就不进行逆序,其他字符进行逆序。想到了两种方法: 第一种是做两个...

网友评论

      本文标题:逆序字符串(二)

      本文链接:https://www.haomeiwen.com/subject/dqgoiqtx.html