`

栈的简单应用--单词反转

    博客分类:
  • Java
 
阅读更多

       我们知道栈是一种先进后出,也就是后进先出的数据结构,那么我们把一个单词的每个字母一次压入栈中,然后一次出栈就能够实现单词反转,下面是简单的例子!

public class DCFZ {

	private int length;
	private char[] values;
	private int top;
	public DCFZ(int m) {
		length = m;
		values = new char[length];
		top = -1;
	}
	
	public void push(char c) {
		values[++top] = c;
	}
	
	public char pop() {
		return values[top--];
	}
	
	public boolean isEmpty() {
		return top == -1;
	}
	
	public boolean isFull() {
		return top == length-1;
	}
	
	public static void main(String[] args) {
		DCFZ dcfz = new DCFZ(10);
		String str = "你是 who is";
		char[] ch = str.toCharArray();
		for (char c:ch) {
			if (!dcfz.isFull()) {
				dcfz.push(c);
			}
		}
		
		while (!dcfz.isEmpty()) {
			System.out.print(dcfz.pop());
		}
	}

}

 输出结果:si ohw 是你

 

分享到:
评论

相关推荐

    反转字符串1

    3. **分两步反转**:首先,反转整个句子,这样单词的顺序就被反转了,但单词内部的字符顺序也被反转。然后,再次遍历句子,找到每个单词的边界(由空格或字符串末尾标识),并反转每个单词内部的字符,由于每个字符...

    weixin052用于日语词汇学习的微信小程序+ssm(源码+部署说明+演示视频+源码介绍+lw).rar

    Spring:Spring是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以IoC(控制反转)和AOP(面向切面编程)为内核。 SpringMVC:SpringMVC是Spring的一个模块,它是一个基于Java的实现了MVC设计模式...

    翻转字符串里的单词(翻转+双指针去空格)1

    6. 递归与分治思想:虽然本题没有直接使用递归,但可以借鉴分治的思想,先整体反转整个字符串,再分别反转每个单词,将大问题分解为小问题解决。 7. 空间复杂度和时间复杂度分析:由于只对原字符串进行原地修改,...

    数据结构课程设计题目

    - 应用:设计一个简单的计算器,使用栈处理表达式的计算。 3. **树结构的实现与操作** - 实现二叉树,包括插入、删除节点,以及前序、中序、后序遍历。 - 实现AVL树,确保其自平衡特性。 - 实现红黑树,理解其...

    数据结构与算法题解

    - 反转字符串中的单词。 - **ValidPalindrome** - 判断一个字符串是否为回文串。 - **LongestPalindromicSubstring** - 寻找字符串中的最长回文子串。 - **SpaceReplacement** - 替换字符串中的空格。 - **...

    java数据结构和算法

    - 再次遍历反转后的字符串,将每个单词单独反转。 - 最终得到的结果即为所求。 ##### 1.2.8 判断整数序列是不是二元查找树的后序遍历结果 - **问题描述**:给定一个整数序列,判断它是否为某个二叉搜索树的后序...

    数据结构与算法 腾讯精选练习50 V1.0.pdf

    - 反转字符串中的单词III(Day50):字符串的处理与操作。 上述内容涉及了数据结构中的链表、栈、队列、树和图等概念,算法方面则包括了二分查找、动态规划、递归、回溯、哈希、排序、搜索等基础算法技巧。通过对...

    Java工程师美团面试题.pdf

    - **字符串反转**:可以通过两次反转字符串来实现,先整体反转,再反转单词;或者将字符串分割成单词,然后反转单词顺序。 - **二叉树添加next指针**:类似于层次遍历二叉树,利用已有的next指针逐层遍历并链接结点...

    逆序 闰年 统计单词数 随机数输出C++

    逆序操作是数据处理中的常见任务,它可以通过多种方式实现,例如双指针法、栈或者反转数组下标等。在C++中,可以使用`std::reverse`函数来方便地完成这一操作,它属于`<algorithm>`库。 "闰年"是指按照公历规定,能...

    lintcode算法分析和解答

    - **反转字符串中的单词(Reverse Words in a String)** - 反转字符串中单词的顺序。 - **有效的回文字符串(Valid Palindrome)** - 判断一个字符串是否是回文字符串。 - **最长回文子串(Longest Palindromic ...

    chf.rar_chf

    这里实现的功能是对包含空格的字符串进行单词级别的逆序操作,即将句子中的单词顺序反转,但保留每个单词内部的字符顺序不变。 【描述】中提到的具体示例是将句子"this is a string."逆序为"string a is this"。这...

    瓶子君的算法小书.pdf

    - 栈的定义及其在前端中的应用,如调用栈、内存中的栈空间和堆空间、垃圾回收机制。 - 解决栈相关算法题目,例如最小栈、有效的括号匹配等。 6. **队列结构** - 队列和双端队列(Deque)的定义及应用。 - 解决...

    StringProject

    这个文件可能是实现字符串反转功能的代码,可能包括多种不同的反转方法,如使用栈、双指针或者直接调用内置函数。 总的来说,"StringProject"这个项目提供了一个全面的字符串算法实践平台,涵盖了字符串搜索、反转...

    algorithm_leetcode_

    - 字符串处理:如字符串反转、最长回文子串、单词搜索、模式匹配等。 - 树和图问题:如二叉树的遍历、查找最近的节点、图的遍历、最短路径等。 - 链表操作:如两链表的交点、删除链表中的元素、合并两个有序链表...

    算法-leetcode-剑指offer上的题很多

    - **反转单词(Reverse Words)**: 将字符串中的单词顺序反转。 - **验证回文字符串(Valid Palindrome)**: 判断一个字符串是否是回文。 - **最长回文子串(Longest Palindromic Substring)**: 找出字符串中最长的回文...

    JavaScript中数据结构与算法(一):栈

    检测一个字符串是否为回文的最简单方法是把字符串反转,然后判断反转后的字符串是否与原字符串相同。如果相同,则该字符串是回文;如果不同,则不是回文。利用栈的特性,可以将字符串的每个字符依次推入栈中,然后再...

    数据结构的一些面试题.pdf

    3. **解释栈和队列的区别及其应用** - **栈**遵循先进后出(LIFO)原则,常见的应用场景包括函数调用、括号匹配等。 - **队列**遵循先进先出(FIFO)原则,常用于任务调度、消息队列等场景。 4. **在二叉树中如何...

Global site tag (gtag.js) - Google Analytics