题目:
写一个函数,将一个字符串变成倒序,结果存于原字符串,不得额外分配空间保存字符串。例如:abcdef 经变换后为 fedcba
算法思路:
采用递归算法,字符两两交换。
package reverseString;
public class ReverseString
{
/**
* @param args
*/
public static void main(String[] args)
{
String test = "12345";
System.out.println(reverse(test, 0, (test.length() - 1)));
}
private static String reverse(String string, int startIndex, int endIndex)
{
if (startIndex >= endIndex)
return string;
// swap char at startIndex and endIndex
char characterAtEnd = string.charAt(endIndex);
if ((endIndex + 1) < string.length())
string = string.substring(0, endIndex) +
string.charAt(startIndex) +
string.substring(endIndex + 1, string.length());
else
string = string.substring(0, endIndex) + string.charAt(startIndex);
string = string.substring(0, startIndex) +
characterAtEnd +
string.substring(startIndex + 1, string.length());
return reverse(string, ++startIndex, --endIndex);
}
}
分享到:
相关推荐
5. **字符串处理**:读取用户输入的字符串,并进行逆序输出。 6. **程序结构**:理解代码段、数据段和堆栈段的作用及其相互之间的关系。 通过以上分析可以看出,该程序是一个典型的汇编语言示例,适合于初学者学习...
在给出的代码片段中,可以看到`DesUtil`类中包含了一个构造函数,用于将字符串形式的密钥转换为字节数组`bytekey`。这是因为DES算法接受的密钥长度固定为64位,但实际上只使用了其中的56位,剩下的8位作为奇偶校验位...
上述知识点涵盖了Java编程基础、数组操作、循环控制、面向对象设计、字符串处理以及正则表达式的应用等多个方面。这些知识点对于初学者来说,都是构建坚实编程基础的重要组成部分。掌握这些知识点,能够帮助初学者更...
Java代码中使用了`Scanner`类来获取用户输入的明文字符串,通过`System.out.println`方法输出加密和解密的结果。此外,代码中通过二维数组来模拟明文分组的存储,使用一维数组来存储秘钥。实际编码时,需要特别注意...
4. **字符串逆置**:可以通过双指针法实现字符串的反转,一个指针从前往后,一个指针从后往前,交换对应位置的字符。 5. **保留小数位数**:使用`DecimalFormat`类或`String.format()`方法可以控制浮点数的显示精度...
首先,我们需要将输入的字符串分解成运算符和运算数,这可以通过遍历字符串并检查每个字符是否在运算符集合中来完成。运算数是数字,可以直接入栈;运算符则需要与栈顶的运算符进行优先级比较。优先级可以通过为每个...
4. **数据转换**:由于Java的`Cipher`接口处理的是字节数组,所以可能需要将输入字符串转换为字节,解密后将字节还原为字符串。 5. **界面与内核的分离**:界面部分负责用户交互,如输入数据和显示结果,而内核部分...
线性数据结构包括线性表、栈、队列、数组和字符串。线性表是一种有序的数据集合,可以是动态或静态的,如C++中的vector或Java中的ArrayList。栈遵循“后进先出”原则,常用于递归和表达式求值。队列则遵循“先进先出...
Java的`Integer`类提供了`toBinaryString()`方法,它可以直接将十进制整数转换为二进制字符串。以下是一个简单的示例: ```java public class Main { public static void main(String[] args) { int decimal...
- `equals(Object anObject)` 用来比较两个字符串的内容是否相等。 - `compareTo(String anotherString)` 用来比较字符串大小。 **7. Object中的方法** - `Object` 类是所有 Java 类的基类,提供了一些基本方法,...
6.2.2 识别语言中的字符串 199 6.3 栈在代数表达式中的应用 200 6.3.1 计算后缀表达式 201 6.3.2 中缀表达式与后缀表达式的等价转换 202 6.4 使用栈查找航班图 205 6.5 栈和递归的关系 212 C++片段3 异常 221 ...
1. **花名统计**:这是一个简单的字符串处理和分类问题,可以用Java通过读取文本文件,遍历并根据花名的出处进行分类计数。这涉及到文件I/O操作、字符串处理和数据结构(如HashMap)的使用。 2. **队列元素逆置**:...
/将二进制位串转为长度为8的字符串水 int Bit64ToChar8 (ElemType bitL64, ElemType ch18) int cnt memset(ch, 0, 8) for(ent-0: cnt<8: cnt++i BitToByte(bit+(cnt<<3), ch+cnt) return 0 /*生成子密钥 ...
- 判断回文:检查字符串是否正读和反读相同。 - 数组中大于平均值的个数:计算数组平均值,然后统计大于该平均值的元素数量。 - 单链表逆置:反转链表的顺序。 - 树的遍历:深度优先搜索(DFS)和广度优先搜索...
本题考察了考生对文件操作、字符串处理及基本数据结构(如哈希表)的理解与应用能力。 **详细解析:** 1. **文件读取与处理:** - 使用Java中的`FileReader`或`BufferedReader`来读取存储花名及其出处的文本文件。...