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

使用Stack堆栈集合大数据运算

    博客分类:
  • java
阅读更多

使用Stack堆栈集合大数据运算

package com.sta.to;

import java.util.Iterator;
import java.util.Stack;

public class DaMax {

	public void jiaFa(String value1, String value2) {
	
	/**
     * 更多资料欢迎浏览凯哥学堂官网:http://kaige123.com 

    * @author 小沫
    */
		
		// 把字符串用toCharArray拆成字符
		char[] c1 = value1.toCharArray();
		char[] c2 = value2.toCharArray();

		// 申请好2个Stack集合准备把字符放进去
		Stack numvalue1 = new Stack();
		Stack numvalue2 = new Stack();
		// 进栈
		for (char c : c1) {
			numvalue1.push(c);
		}
		for (char c : c2) {
			numvalue2.push(c);
		}
		//new好一个缓存池,接收sum
		StringBuffer buffer = new StringBuffer();
		int jw = 0;//进位	
		//用常用类Math获取最长的长度
		int count = Math.max(c1.length, c2.length);
		
		//把长的拿来循环
		for (int i = 0; i < count; i++) {
			//用来存放出栈的值
			int num1;
			int num2;
			//每一次出栈的值转为int 才能进行运算
			try {
				num1 = Integer.parseInt(numvalue1.pop().toString());
			} catch (Exception e) {
				num1 = 0;//如果异常那就抛出0
			}
			try {
				num2 = Integer.parseInt(numvalue2.pop().toString());
			} catch (Exception e) {
				num2 = 0;
			}
			//把num1和num2引用的值加上jw交给sum
			int sum = num1 + num2 + jw;
			if (sum >= 10) {
				//sum大于或等于10  那就要先前一位数进1
				jw = 1;
				buffer.append(sum % 10);//把总和用取摸后的余数放进缓冲池
			} else {
				jw = 0;//不大于或等于10  jw就为0 直接把总和交给缓冲池
				buffer.append(sum);
			}
		}
		if (jw == 1) {
			//问jw还等不等于1,还等于说明最前位数需要多个1  如 99+1=100
			buffer.append(1);
		}
		buffer.reverse();// 把数值反过来
		System.out.println(buffer);
	}
}

测试类:

package com.sta.to;

import java.nio.Buffer;

public class Test {

	public static void main(String[] args) {
		
		DaMax ys = new DaMax();
		
		ys.jiaFa("10", "5");//10+5
		ys.jiaFa("15", "50");//15+50
		ys.jiaFa("999999999999999", "1");//999...+1
		ys.jiaFa("99", "1");//99+1
		ys.jiaFa("80", "80");//80+80
		ys.jiaFa("8", "7");//8+7
	}
}
分享到:
评论

相关推荐

    list_stack_que.rar_堆栈集合

    这里我们详细探讨一下"list_stack_que.rar_堆栈集合"这个压缩包中涉及的知识点。 首先,链表是一种线性数据结构,与数组不同,它不连续存储元素,而是通过节点之间的指针连接。链表分为单链表、双链表和循环链表等...

    VC++2012编程演练数据结构《7》堆栈实现递归运算

    在本主题中,我们将深入探讨如何使用VC++2012进行编程,特别是关于数据结构中的堆栈(Stack)以及如何用堆栈来实现递归运算。堆栈是一种特殊的线性数据结构,遵循“后进先出”(Last In First Out, LIFO)原则,而...

    Stack堆栈解题套路【LeetCode刷题套路教程5】

    Stack堆栈解题套路【LeetCode刷题套路教程5】

    Java利用堆栈实现简单四则运算

    为了正确处理这类运算,我们需要遵循运算符的优先级和结合性规则,这通常是通过使用堆栈来实现的。 首先,我们要了解运算符的优先级:乘法和除法高于加法和减法;同级别的运算符按照从左到右的顺序进行计算。此外,...

    堆栈 Stack实现计算器 C++ 数据结构

    以下是一个简化的C++代码示例,展示了如何使用堆栈来计算后缀表达式: ```cpp #include #include &lt;stack&gt; #include int calculate postfixExpression(const std::string& expr) { std::stack&lt;int&gt; stack; for ...

    C++ 实现堆栈stack类模板

    实现堆栈stack类模板,类模板的模型为:堆栈按数组索引减小的方向增长.

    堆栈类Stack的C++实现

    在C++中,我们可以使用STL(Standard Template Library)中的`&lt;stack&gt;`库来实现堆栈,但为了理解堆栈的底层实现,我们可以自定义一个堆栈类。以下是一个简单的实现: ```cpp #include #include class Stack { ...

    android ndk-stack使用说明。

    要查看C/C++代码的堆栈信息,可以使用`adblogcat`命令,并结合`ndk-stack`来获取具体的堆栈调用情况。具体命令格式如下: ```bash adb logcat | ndk-stack -sym ``` 其中,`&lt;path_to_symbol_directory&gt;`是指向...

    大数据搜索与日志挖掘及可视化方案 ELK Stack Elasticsearch Logstash Kibana 第2版

    《大数据搜索与日志挖掘及可视化方案:ELK Stack(Elasticsearch, Logstash, Kibana)第二版》 在大数据领域,有效地管理和分析海量数据是至关重要的。ELK Stack,即Elasticsearch、Logstash和Kibana的组合,提供了...

    Android下各语言加callStack示例

    在Android系统中,理解和分析调用堆栈(call stack)对于开发者来说至关重要,尤其是在调试和性能优化时。本文将深入探讨如何在Android环境下为不同语言(C语言、C++、Java以及内核空间)添加并打印调用堆栈信息。 ...

    STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack

    5. **内存模型和段间通信**:在保护模式下,如何使用堆栈段与数据段或代码段进行通信,理解段寄存器的作用。 6. **实际编程示例**:可能包括了简单的汇编语言程序,演示如何设置栈、进行进制转换以及在栈上进行基本...

    大数据搜索与日志挖掘及可视化方案——ELK Stack:Elasticsearch Logstash Kibana(第2版)

    《大数据搜索与日志挖掘及可视化方案——ELK Stack:Elasticsearch Logstash Kibana(第2版)》是高凯所著的一本深入解析ELK Stack技术的专著。这本书详细介绍了如何利用ELK Stack进行大数据处理、日志分析和可视化...

    大数据搜索与日志挖掘及可视化方案--ELK+Stack+Elasticsearch+Logstash+Kibana.pdf

    大数据搜索与日志挖掘及可视化方案--ELK+Stack+Elasticsearch+Logstash+Kibana大数据搜索与日志挖掘及可视化方案--ELK+Stack+Elasticsearch+Logstash+Kibana

    stack实现运算表达式(C++实现)

    本示例中,我们将探讨如何使用C++标准库中的`stack`容器来实现一个简单的运算表达式解析器,处理如"3+(3*5)"这样的字符串。这种解析方法通常称为后缀表达式(Reverse Polish Notation, RPN)或逆波兰表示法。 首先...

    堆栈实现的计算器(四则运算)功能

    5. **运算符优先级**:使用堆栈处理运算符优先级时,我们需要遵循数学中的运算规则,例如先乘除后加减,以及括号内的运算优先。对于括号,我们需要在遇到左括号时将当前运算符压栈,遇到右括号时弹出栈顶运算符进行...

    stm32cubemx freertos 堆栈使用情况显示demo

    总结,这个“stm32cubemx freertos 堆栈使用情况显示demo”旨在教开发者如何利用STM32CubeMX和FreeRTOS进行实时的堆栈监控,这对于优化任务分配、预防堆栈溢出以及提高系统稳定性至关重要。通过学习这个示例,你可以...

    STM32双堆栈及其在uCOS-II中的使用

    STM32双堆栈是ARM Cortex-M3微控制器中的一种重要机制,它允许在用户态和中断态之间进行切换,并且提供了两个独立的堆栈空间:MSP(Main Stack Pointer)和PSP(Process Stack Pointer)。在uCOS-II操作系统中,双...

    用数组实现堆栈stack

    用数组设计堆栈,主要实现push,pop操作, 并判断是否上衣下一

Global site tag (gtag.js) - Google Analytics