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

收集面试题(十二)(字符串反转)

阅读更多
字符串翻转
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();
	}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java面试题收集集锦

    - 字符串操作涉及字符串反转和替换,可以通过StringBuilder或StringBuffer类实现。 - 数据类型转换包括数值型字符与数字的相互转换,以及数字格式化。 - 日期和时间处理常用java.util.Date和java.time包,可以...

    python常见面试题11道

    有多种方法可以实现字符串反转,例如: * 利用字符串本身的翻转 `def string_reverse1(text='abcdef'): return text[::-1]` * 把字符串变成列表,用列表的 reverse 函数 * 新建一个列表,从后往前取 * 利用双向列表...

    python 面试题 题库

    以下是一些关于Python面试题的相关知识点: 1. **单例模式**: 单例模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。在Python中,可以通过元类或者装饰器来实现。第一种方法利用元类Singleton,...

    百度面试题大收集算法

    9. **字符串反转**: 可以用双指针法实现,一个指针从前往后,另一个从后往前,交换对应位置的字符。 10. **整数转换为26进制表示**: 类似于十进制转十六进制,不过基数是26,可以用模运算和除法实现。 11. **...

    2024年java面试题

    Java面试题涵盖了许多核心概念,包括基础语法、JVM、线程、Spring框架以及MySQL数据库的相关知识。以下是对这些知识点的详细解释: 1. **接口与抽象类的区别**: - 接口是完全抽象的,只能包含方法签名,不能有...

    必看Android 500道高薪面试题集

    3. 实现字符串倒序的方法:可以通过字符串分割成字符数组后反转,再拼接成新的字符串。 4. 抽象类与接口的区别:抽象类可以包含成员变量、构造方法和具体方法,而接口则主要用于定义方法规范,实现接口的类需要实现...

    JAVA程序员面试题收集.doc

    【Java程序员面试题收集】 Java面试题主要涵盖了基础类、应用类和其他类的知识点,旨在测试面试者的Java语言掌握程度和实际应用能力。以下是一些关键知识点的详细说明: 1. **Java基础知识** - Java的基本数据...

    Java大厂面试题集(最新最全)

    Java的基础知识包括语法特性、数据类型、运算符、流程控制语句(如if、switch、for、while)、数组、字符串、面向对象特性(封装、继承、多态)等。面试中可能会考察这些基本概念的理解和应用,例如类的设计、接口的...

    JAVA面试题集锦大全宝典

    - 字符串:了解String类的特点,字符串的不可变性,以及StringBuilder和StringBuffer的使用场景。 2. **集合框架** - List、Set和Queue接口:理解它们的特性,如ArrayList、LinkedList、HashSet、TreeSet和...

    Python面试题128.pdf

    - 字符串反转用切片操作`[::-1]`。 - 处理字符串成字典需用到字符串分割和字典构造。 - 列表按元素属性排序使用`sorted()`的`key`参数。 - 删除列表重复元素可以使用`set`。 6. **企业面试题**: - 遍历目录和...

    java面试题 java 面试题 面试 程序员

    Java面试题涵盖了许多核心概念,包括但不限于以下几个方面: 1. **随机数生成与统计**:题目要求设计一个方法,生成100个大写字母并统计元音字母的数量。这涉及到`Math.random()`方法的使用,它能生成0到1之间(含0...

    interview-go:golang面试题集合

    Golang 面试题搜集 Golang 常见面试题目解析 golang 并发题目测试 记一道字节跳动的算法面试题 多协程查询切片问题 对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生...

    java面试题集锦.zip

    1. **基础语法**:包括变量、数据类型(基本类型与引用类型)、运算符、流程控制(if, switch, for, while等)、方法定义和调用、数组以及字符串操作。 2. **类与对象**:理解类的定义、对象的创建、封装、继承和...

    JAVA程序员面试题收集

    字符串反转 - **示例**:给出具体的代码实现来反转一个字符串。 - **算法分析**:分析不同方法的时间复杂度和空间复杂度。 #### 3. 类型转换 - **包装类与基本类型之间的转换**:如何将`Integer`或`Double`转换为...

    C语言面试题汇总.pdf

    15. 字符串反转操作:文档中提到了对字符串进行反转的操作,这是一种常见的字符串处理技巧,比如通过交换字符位置的方式来实现字符串的反转。 16. 数学运算:文档中还包含了对指数运算的讨论,如“2^n-1”,这涉及...

    Java+最常见200+面试题全解析.doc

    9. **字符串反转**: 可以使用 StringBuilder 或 StringBuffer 的 reverse() 方法,或者使用 Java 8 的 Stream API 来反转字符串。 10. **String 类的常用方法**: 包括 length(), charAt(), substring(), ...

    2022年C语言笔试面试题整理.doc

    3. 用递归方式、非递归方式写函数将一种字符串反转。 函数原型如下:char *reverse(char *str); 知识点:递归函数、字符串操作。 4. strcpy 函数和 memcpy 函数有什么区别?它们各自使用时应当注意什么问题? ...

    面试题-python3将N(N1....docx

    面试题主要涉及的是Python编程语言,具体是一个模拟游戏或算法问题,可以称为“报数淘汰赛”。...这些面试题涵盖了Python的基础语法、数据结构、字符串处理、算法等多个方面,对于提升编程能力具有很好的实践价值。

    千方百计的面试题

    至于编程题中的字符串反转及替换、编码转换、字符串分隔、打印昨天的当前时刻等,这些都是基础的字符串处理和时间处理操作,实际编码中常会用到。 最后,java和javascript虽然名字相似,但它们是完全不同的编程语言...

Global site tag (gtag.js) - Google Analytics