`
mazhiyuan
  • 浏览: 64709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第二章 旋转字符串的思考

阅读更多

编程珠玑第二章旋转字符串,abcdefg向左旋转3位,变为defgabc,书中的思想是分三步,实现字符串的旋转

 

实现代码如下

package org.waitingfortime.编程珠玑.c2;

/**
 * Created by IntelliJ IDEA.
 * User: mazhiyuan
 * Date: 12-10-25
 * Time: 下午6:39
 * 编程珠玑第二章,向左旋转字符串
 */
public class ReverseString {
    public static char[] reverse(char[] chars, int i) {
        if (i <= 0)
            throw new IllegalArgumentException("i must be greater than 0");

        i = i % chars.length;
        //first step
        _reverse(chars, 0, i - 1);
        //second step
        _reverse(chars, i, chars.length - 1);
        //third step
        _reverse(chars, 0, chars.length - 1);

        return chars;
    }

    private static void _reverse(char[] chars, int b, int e) {
        while (b <= e) {
            swap(chars, b, e);
            b++;
            e--;
        }
    }

    private static void swap(char[] chars, int b, int e) {
        char temp = chars[b];
        chars[b] = chars[e];
        chars[e] = temp;
    }

    public static void main(String[] args) {
        char c[]={'a','b','c','d','e','f','g','h','i'};
        System.out.println(java.util.Arrays.toString(ReverseString.reverse(c,5)));
    }
}

 结果输出为

 

[f, g, h, i, a, b, c, d, e]

 看到结果后我发现这个其实就是将前n个字符截取后拼接到后面么,干嘛还要分三步呢。。。

 难道是我没理解旋转的含义么

分享到:
评论

相关推荐

    第4章 字符串.pptx

    ### 第4章 字符串知识点详解 #### 一、字符串介绍 在计算机编程中,**字符串**是一种常用的数据类型,用于表示一系列字符。在大多数现代编程语言中,字符串被视为不可变对象,这意味着一旦创建了一个字符串,其内容...

    VB拆分字符串,分隔字符串

    在VB(Visual Basic)编程中,处理字符串是常见的任务之一,其中包括将一个长字符串拆分成多个子字符串。这个过程通常称为“字符串拆分”或“分隔字符串”。在这个主题中,我们将深入探讨VB中如何实现这一操作,以及...

    C语言左旋转字符串与翻转字符串中单词顺序的方法

    定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。 要求时间对长度为 n 的字符串操作的复杂度为 O(n),辅助...

    C语言二进制字符串与十六进制字符串相互转化

    本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...

    [字符串]字符串提取(获取两个字符串中间的字符串)

    1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。返回值是子字符串的起始索引,如果未找到则返回-1。 2. **Substring**:根据提供的起始索引和长度,截取字符串的一部分。 例如,假设...

    C语言字符串转换为Python字符串的方法

    如果你并不确定编码方式或者数据是二进制的,你最好将字符串编码成字节。 在构造一个对象的时候,Python通常会复制你提供的字符串数据。如果有必要的话,你需要在后面去释放C字符串。同时,为了让程序更加健壮,你...

    3.如何旋转显示字符串?(Visual C++编程 源代码)

    3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转...

    旋转字符串1

    假设我们有一个字符串A,它的长度为N,那么我们可以将A的最左边的字符移动到最右边,即将第一个字符移到最后一个位置,依次类推,这样就完成了一次旋转操作。例如,对于字符串A = 'abcde',经过一次旋转后,A就会...

    去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符

    去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符两个程序,vs2013已经验证

    accp5.0java第九章字符串

    在这一课程体系中,第九章内容专注于Java编程语言中的一个基础且核心概念——字符串。 字符串在Java编程中承担着重要的角色,它是一种用来表示一系列字符的数据类型,广泛用于处理文本信息。在Java中,字符串被设计...

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节;

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...

    二进制与字符串之间的转换类CBinary

    在计算机科学中,二进制数据和字符串是两种基本的数据表示形式。二进制数据,以0和1的形式存在,是计算机内部处理和存储所有信息的基础。字符串则是一系列字符的集合,通常用于人类可读的数据表示。在编程中,有时...

    c#正则表达式截取指定字符串之间的字符串。类文件直接用就可以了~

    第二个是把所有的符合条件的字符串都截取出来,提取出来,比如字符串 string a="ab123456,"ab323456",那么就只要截取2到4之间的字符串,然后存入到了一个列表里,想提取直接读取列表就可以了,非常方便实用哦。

    二进制文件字符串修改器

    二进制文件字符串修改器,二进制文件字符串修改器,二进制文件字符串修改器

    labview字符串拆分到数组 支持中文1

    二、LabVIEW中的字符串数组 在LabVIEW中,数据主要通过数据类型表示,字符串可以以单个字符串或字符串数组的形式存在。字符串数组允许我们存储多个独立的字符串,每个字符串都有自己的索引。拆分后的子字符串通常会...

    Java第6章 字符串 含源代码

    在Java编程语言中,字符串是极其重要且常用的数据类型,用于处理文本信息。本章将深入探讨Java中的字符串处理,包括其基础知识、方法以及实际应用。以下是对Java字符串的详细讲解: 1. **字符串对象与字面量** 在...

    C语言实现字符串截取

    根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...

    c#中 base64字符串与普通字符串互转

    在C#编程语言中,Base64是一种用于将二进制数据编码为ASCII字符串的机制,以便在不支持二进制传输的系统(如电子邮件)中传输。Base64编码可以将任何二进制数据转换为可打印的字符,包括图片、文件和其他非文本数据...

    二次分割字符串

    "二次分割字符串"这个主题聚焦于如何利用字符串自身的函数进行更深层次的分割操作。在这个场景中,我们通常会遇到一次分割(primary split)后得到的结果仍然包含需要进一步拆分的子字符串,这就需要进行二次甚至多...

    1.二进制字符串转十进制数值_labview_二进制转十进制_

    在LabVIEW编程环境中,二进制字符串转换为十进制数值是常见的操作,尤其是在处理数据或进行计算时。本文将详细讲解如何利用LabVIEW实现这一转换,并探讨相关知识点。 首先,我们要理解二进制和十进制之间的基本概念...

Global site tag (gtag.js) - Google Analytics