leetcode刷题源代码记录
来源:互联网 发布:vb与vc的区别 编辑:程序博客网 时间:2024/06/07 17:13
1、reverse words
例如:输入 “ the sky is blue”
输出 “ blue is sky the”
源代码:
public String reverseWords(String s) { if(s.equals(""))return ""; Stack<String> stack = new Stack<String>();StringBuilder results = new StringBuilder();for(String str : s.split(" ")){ if(str.equals("")) continue;stack.addElement(str);}while(!stack.empty())results.append(stack.pop() + " ");return results.toString().trim(); }
2、
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
即,求逆波兰式序列的值
思路:本题采用栈来存储,遍历给定字符串,如果是操作符,则取栈顶的两个数操作,并把结果压入栈,如果是数字,则将String格式转化为Int 格式的整数,其中,还要注意判断数字的符号。代码如下:
import java.util.Stack;public class Solution2 {public static int evalRPN(String[] tokens){if(tokens.equals(""))return 0;Stack<Integer> stack = new Stack<Integer>();char[] charArray = new char[tokens.length];for(String str : tokens){int operator1, operator2;switch(str){case "+" :operator1 = stack.pop();operator2 = stack.pop();stack.add(operator2 + operator1);break;case "-":operator1 = stack.pop();operator2 = stack.pop();stack.add(operator2 - operator1);break;case "*":operator1 = stack.pop();operator2 = stack.pop();stack.add(operator2 * operator1);break;case "/":operator1 = stack.pop();operator2 = stack.pop();stack.add(operator2 / operator1);break;default:stack.add(stringToInteger(str));}}return stack.pop();}public static int stringToInteger(String s){int result = 0;int mi = 1;Character firstChar = s.charAt(0);for(int i = s.length() - 1; i > 0; i --){int tmp = Character.getNumericValue(s.charAt(i));result += tmp * mi;mi *= 10;}if(firstChar.equals('-')){return 0 - result;}return result + Character.getNumericValue(firstChar) * mi;}public static void main(String[] args) {// TODO Auto-generated method stubString[] s = {"2", "1", "+" , "3", "*"};String[] s1 = {"3", "-4", "+"};System.out.println(evalRPN(s1));System.out.println(stringToInteger("-4"));}}
3.Add Two Numbers
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int count = 0;ListNode p1 = l1, p2 = l2, currentP = null;l1 = null; while(p1 != null && p2 != null){int sum = p1.val + p2.val + count;count = 0;if(sum >= 10){sum %= 10;count = 1;}p1.val = sum;if(l1 == null){currentP = p1;l1 = currentP;}else{currentP.next = p1;currentP = p1;}p1 = p1.next;p2 = p2.next;}while(p2 != null){p2.val += count;count = 0;if(p2.val >= 10){p2.val %= 10;count = 1;}currentP.next = p2;currentP = p2;p2 = p2.next;if(count == 0)break;}while(p1 != null){p1.val += count;count = 0;if(p1.val >= 10){p1.val %= 10;count = 1;}currentP.next = p1;currentP = p1;p1 = p1.next;if(count == 0)break;}if(count != 0){ListNode node = new ListNode(count);currentP.next = node;}return l1; }}
感觉每个循环里的操作都差不多,有点繁琐,有空再思考思考看看能不能合并下操作。
0 0
- leetcode刷题源代码记录
- 记录源代码
- 刷leetCode记录贴
- 【记录】nginx 源代码
- Android源代码编译记录
- LeetCode记录
- leetcode 刷题目,总结,记录,备忘 13
- leetcode刷题目 ,总结,记录,备忘206
- leetcode刷题目 总结 记录 备忘11
- 光盘内容记录工具-源代码
- 记录几个开源代码地址
- 学习httpbin源代码记录(二)
- 刷leetcode过程中记录难度题,自己做法及最优做法
- leetcode记录-Two Sum
- [LeetCode] Triangle 解题记录
- Leetcode记录7-单链表
- 记录LeetCode的一点一滴
- leetcode题目记录
- 【网络基础】TCP三次握手以及四次断开原理
- 详解B树、B-树、B+树、B*树
- MongoDB的安装与配置
- linux下vi命令大全
- linux常用命令的备忘
- leetcode刷题源代码记录
- vb.net视频总结
- 携程预赛第一场第一题
- 我为什么放弃Go语言
- 如何停止weblogic服务
- 【编程之美资格赛】题目3 : 格格取数
- 堆和栈的理论知识
- Struts2值栈
- weblogic.Deployer 命令行参考