编程珠玑第二章旋转字符串,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章 字符串知识点详解 #### 一、字符串介绍 在计算机编程中,**字符串**是一种常用的数据类型,用于表示一系列字符。在大多数现代编程语言中,字符串被视为不可变对象,这意味着一旦创建了一个字符串,其内容...
Java课件第二章补充字符串.ppt
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。 要求时间对长度为 n 的字符串操作的复杂度为 O(n),辅助...
本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...
1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。返回值是子字符串的起始索引,如果未找到则返回-1。 2. **Substring**:根据提供的起始索引和长度,截取字符串的一部分。 例如,假设...
3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转显示字符串?(Visual C++编程 源代码)3.如何旋转...
假设我们有一个字符串A,它的长度为N,那么我们可以将A的最左边的字符移动到最右边,即将第一个字符移到最后一个位置,依次类推,这样就完成了一次旋转操作。例如,对于字符串A = 'abcde',经过一次旋转后,A就会...
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符两个程序,vs2013已经验证
在计算机科学中,二进制数据和字符串是两种基本的数据表示形式。二进制数据,以0和1的形式存在,是计算机内部处理和存储所有信息的基础。字符串则是一系列字符的集合,通常用于人类可读的数据表示。在编程中,有时...
第二个是把所有的符合条件的字符串都截取出来,提取出来,比如字符串 string a="ab123456,"ab323456",那么就只要截取2到4之间的字符串,然后存入到了一个列表里,想提取直接读取列表就可以了,非常方便实用哦。
二进制文件字符串修改器,二进制文件字符串修改器,二进制文件字符串修改器
第九章聚焦于“字符串”这一核心概念,字符串在Java编程中扮演着至关重要的角色。 字符串在Java中被广泛用于处理文本数据,它们是不可变的对象,一旦创建就不能改变。Java提供了内置的`String`类来操作和管理字符串...
二、LabVIEW中的字符串数组 在LabVIEW中,数据主要通过数据类型表示,字符串可以以单个字符串或字符串数组的形式存在。字符串数组允许我们存储多个独立的字符串,每个字符串都有自己的索引。拆分后的子字符串通常会...
根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...
Arduino 串口接收字符串 本文将详细介绍 Arduino 串口接收字符串的实现方法,包括基本概念、代码实现和应用实例。 一、Arduino 串口通信 Arduino 的串口通信是通过 Serial 类来实现的。 Serial 类提供了一系列的...
在LabVIEW中,字符串操作是常见的任务之一,特别是在数据处理和信息传递中。要将单个字符串创建成字符串数组,我们需要了解LabVIEW的基本数据结构和编程方法。以下是一些关于如何在LabVIEW中创建字符串数组的关键...
二、十六进制串反向转回原字符串 从十六进制串还原字符串,我们需要做相反的操作:首先将十六进制串解析为字节数组,然后将字节数组解码为字符串。C#的`Convert.FromBase64String`和`Encoding.Unicode.GetString`...
标题提到的“C#中在一个字符串中删除另一个字符或字符串”涉及到的关键知识点主要包括字符串操作、字符数组、字符串替换以及正则表达式。以下将详细讲解这些知识点。 首先,C#中的字符串(`string`)是不可变的,这...
在LabVIEW编程环境中,二进制字符串转换为十进制数值是常见的操作,尤其是在处理数据或进行计算时。本文将详细讲解如何利用LabVIEW实现这一转换,并探讨相关知识点。 首先,我们要理解二进制和十进制之间的基本概念...
本资源"《C语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助学习者巩固和提升在字符串处理方面的技能。 字符串在C语言中扮演着重要角色,它们...