字符串翻转
package StingSub;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Stack;
public class ReverseStr {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(reverseStack("wokessd.cm .cok .ddj dd*&4 dlk"));
System.out.println(reverseDeque("wokessd.cm .cok .ddj dd*&4 dlk"));
System.out.println(reverse("wokessd.cm .cok .ddj dd*&4 dlk", "cok"));
System.out.println(reverseByInfo("wokessd.cm .cok .ddj dd*&4 dlk"));
}
public static String reverseStack(String stringInfo) {
if (stringInfo == null) {
throw new NullPointerException("info is null.");
}
StringBuffer buffer = new StringBuffer("");
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < stringInfo.length(); i++) {
stack.push(stringInfo.charAt(i));
}
while (!stack.empty()) {
buffer.append(stack.pop());
}
return buffer.toString();
}
public static String reverseDeque(String stringInfo) {
if (stringInfo == null) {
throw new NullPointerException("info is null.");
}
StringBuffer buffer = new StringBuffer("");
Deque<Character> deque = new ArrayDeque<Character>();
for (int i = 0; i < stringInfo.length(); i++) {
deque.addFirst(stringInfo.charAt(i));
}
while (!deque.isEmpty()) {
buffer.append(deque.removeFirst());
}
return buffer.toString();
}
public static String reverse(String stringInfo, String noReverse) {
if (stringInfo == null || noReverse == null) {
throw new NullPointerException("info is null.");
}
StringBuffer buffer = new StringBuffer("");
Stack<Character> stack = new Stack<Character>();
boolean iscontain = false;
for (int i = 0; i < stringInfo.length(); i++) {
iscontain = true;
for (int j = 0; j < noReverse.length(); j++) {
if ((i + j) > stringInfo.length()
|| (stringInfo.charAt(i + j) != noReverse.charAt(j))) {
iscontain = false;
break;
}
}
if (iscontain) {
for (int j = noReverse.length() - 1; j >= 0; j--) {
stack.push(noReverse.charAt(j));
}
i += noReverse.length() - 1;
} else {
stack.push(stringInfo.charAt(i));
}
}
while (!stack.empty()) {
buffer.append(stack.pop());
}
return buffer.toString();
}
public static String reverseByInfo(String stringInfo) {
if (stringInfo == null) {
throw new NullPointerException("info is null.");
}
StringBuffer buffer = new StringBuffer("");
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < stringInfo.length(); i++) {
stack.push(stringInfo.charAt(i));
}
while (!stack.empty()) {
buffer.append(stack.pop());
}
String reverseall = buffer.toString();
buffer.delete(0, buffer.length());
for (int i = 0; i < reverseall.length(); i++) {
if (reverseall.charAt(i) == ' ' || reverseall.charAt(i) == '.') {
while (!stack.empty()) {
buffer.append(stack.pop());
}
buffer.append(reverseall.charAt(i));
} else {
stack.push(reverseall.charAt(i));
}
}
while (!stack.empty()) {
buffer.append(stack.pop());
}
return buffer.toString();
}
}
分享到:
相关推荐
- 字符串操作涉及字符串反转和替换,可以通过StringBuilder或StringBuffer类实现。 - 数据类型转换包括数值型字符与数字的相互转换,以及数字格式化。 - 日期和时间处理常用java.util.Date和java.time包,可以...
有多种方法可以实现字符串反转,例如: * 利用字符串本身的翻转 `def string_reverse1(text='abcdef'): return text[::-1]` * 把字符串变成列表,用列表的 reverse 函数 * 新建一个列表,从后往前取 * 利用双向列表...
以下是一些关于Python面试题的相关知识点: 1. **单例模式**: 单例模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。在Python中,可以通过元类或者装饰器来实现。第一种方法利用元类Singleton,...
9. **字符串反转**: 可以用双指针法实现,一个指针从前往后,另一个从后往前,交换对应位置的字符。 10. **整数转换为26进制表示**: 类似于十进制转十六进制,不过基数是26,可以用模运算和除法实现。 11. **...
Java面试题涵盖了许多核心概念,包括基础语法、JVM、线程、Spring框架以及MySQL数据库的相关知识。以下是对这些知识点的详细解释: 1. **接口与抽象类的区别**: - 接口是完全抽象的,只能包含方法签名,不能有...
3. 实现字符串倒序的方法:可以通过字符串分割成字符数组后反转,再拼接成新的字符串。 4. 抽象类与接口的区别:抽象类可以包含成员变量、构造方法和具体方法,而接口则主要用于定义方法规范,实现接口的类需要实现...
【Java程序员面试题收集】 Java面试题主要涵盖了基础类、应用类和其他类的知识点,旨在测试面试者的Java语言掌握程度和实际应用能力。以下是一些关键知识点的详细说明: 1. **Java基础知识** - Java的基本数据...
Java的基础知识包括语法特性、数据类型、运算符、流程控制语句(如if、switch、for、while)、数组、字符串、面向对象特性(封装、继承、多态)等。面试中可能会考察这些基本概念的理解和应用,例如类的设计、接口的...
- 字符串:了解String类的特点,字符串的不可变性,以及StringBuilder和StringBuffer的使用场景。 2. **集合框架** - List、Set和Queue接口:理解它们的特性,如ArrayList、LinkedList、HashSet、TreeSet和...
- 字符串反转用切片操作`[::-1]`。 - 处理字符串成字典需用到字符串分割和字典构造。 - 列表按元素属性排序使用`sorted()`的`key`参数。 - 删除列表重复元素可以使用`set`。 6. **企业面试题**: - 遍历目录和...
Java面试题涵盖了许多核心概念,包括但不限于以下几个方面: 1. **随机数生成与统计**:题目要求设计一个方法,生成100个大写字母并统计元音字母的数量。这涉及到`Math.random()`方法的使用,它能生成0到1之间(含0...
Golang 面试题搜集 Golang 常见面试题目解析 golang 并发题目测试 记一道字节跳动的算法面试题 多协程查询切片问题 对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生...
1. **基础语法**:包括变量、数据类型(基本类型与引用类型)、运算符、流程控制(if, switch, for, while等)、方法定义和调用、数组以及字符串操作。 2. **类与对象**:理解类的定义、对象的创建、封装、继承和...
字符串反转 - **示例**:给出具体的代码实现来反转一个字符串。 - **算法分析**:分析不同方法的时间复杂度和空间复杂度。 #### 3. 类型转换 - **包装类与基本类型之间的转换**:如何将`Integer`或`Double`转换为...
15. 字符串反转操作:文档中提到了对字符串进行反转的操作,这是一种常见的字符串处理技巧,比如通过交换字符位置的方式来实现字符串的反转。 16. 数学运算:文档中还包含了对指数运算的讨论,如“2^n-1”,这涉及...
9. **字符串反转**: 可以使用 StringBuilder 或 StringBuffer 的 reverse() 方法,或者使用 Java 8 的 Stream API 来反转字符串。 10. **String 类的常用方法**: 包括 length(), charAt(), substring(), ...
3. 用递归方式、非递归方式写函数将一种字符串反转。 函数原型如下:char *reverse(char *str); 知识点:递归函数、字符串操作。 4. strcpy 函数和 memcpy 函数有什么区别?它们各自使用时应当注意什么问题? ...
面试题主要涉及的是Python编程语言,具体是一个模拟游戏或算法问题,可以称为“报数淘汰赛”。...这些面试题涵盖了Python的基础语法、数据结构、字符串处理、算法等多个方面,对于提升编程能力具有很好的实践价值。
至于编程题中的字符串反转及替换、编码转换、字符串分隔、打印昨天的当前时刻等,这些都是基础的字符串处理和时间处理操作,实际编码中常会用到。 最后,java和javascript虽然名字相似,但它们是完全不同的编程语言...