`
mazhiyuan
  • 浏览: 65033 次
  • 性别: 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章 字符串知识点详解 #### 一、字符串介绍 在计算机编程中,**字符串**是一种常用的数据类型,用于表示一系列字符。在大多数现代编程语言中,字符串被视为不可变对象,这意味着一旦创建了一个字符串,其内容...

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

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

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

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

    【面向对象的程序设计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中,字符串被设计...

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

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

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

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

    二进制文件字符串修改器

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

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

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

    Java第6章 字符串 含源代码

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

    C语言实现字符串截取

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

    Arduino串口接收字符串

    Arduino 串口接收字符串 本文将详细介绍 Arduino 串口接收字符串的实现方法,包括基本概念、代码实现和应用实例。 一、Arduino 串口通信 Arduino 的串口通信是通过 Serial 类来实现的。 Serial 类提供了一系列的...

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

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

    C# 字符串转十六进制串,16进制反向转回原字符串

    二、十六进制串反向转回原字符串 从十六进制串还原字符串,我们需要做相反的操作:首先将十六进制串解析为字节数组,然后将字节数组解码为字符串。C#的`Convert.FromBase64String`和`Encoding.Unicode.GetString`...

    C语言字符串练习(习题+答案).zip

    本资源"《C语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助学习者巩固和提升在字符串处理方面的技能。 字符串在C语言中扮演着重要角色,它们...

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

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

    易语言十六进制与字符串转换

    又如在处理二进制文件时,我们需要先将文件内容读取为十六进制字符串,然后再进行分析或处理。 总结来说,易语言十六进制与字符串转换涉及了基础的数据类型转换、线程编程以及源码学习。理解并掌握这些知识点,对于...

Global site tag (gtag.js) - Google Analytics