1.Reverse Words in a String

public class Solution {
public String reverseWords(String s) {
String result[] = s.trim().split(" +");
String reverseResult[] = new String[result.length];
String reverse = "";
if(result.length>0){
for(int i = 0;i<result.length;i++){
reverseResult[i] = result[result.length-1-i].trim();
reverse += reverseResult[i].trim()+" ";
}
}
return reverse.trim();
}
}

2.Evaluate Reverse Polish Notation

public class Solution {
public int evalRPN(String[] tokens) {
List<String> numList = new ArrayList<String>();
for(int i = 0;i<tokens.length;i++){
if(tokens[i].equals("+")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))+Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("-")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))-Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("*")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))*Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("/")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))/Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else{
numList.add(tokens[i]);
} }
return Integer.valueOf(numList.get(0)); } }

3.Max Points on a Line(这个题真是很蛋疼啊,开始时真没想到还会包括出现重复点的情况,导致后来写的有点晕了=.=)

/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) { List<Integer> numlist = new ArrayList<Integer>();
HashMap<String, Integer> map;
HashMap<String, Integer> mapPoint;
Integer max = 0;
if (points.length == 1) {
max = 1;
}
for (int i = 0; i < points.length; i++) {
map = new HashMap<String, Integer>();
mapPoint = new HashMap<String, Integer>();
for (int j = i + 1; j < points.length; j++) {
String kString = "";
if ((points[i].x - points[j].x) != 0) {
if (points[i].y - points[j].y == 0) {
kString = String.valueOf(0);
} else {
float k = (float) (points[i].y - points[j].y)
/ (float) (points[i].x - points[j].x);
kString = String.valueOf(k);
}
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else if ((points[i].y - points[j].y) != 0
&& (points[i].x - points[j].x) == 0) {
kString = "no";
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else {
kString = "re";
if (mapPoint.containsKey(kString)) {
int num = mapPoint.get(kString) + 1;
mapPoint.remove(kString);
mapPoint.put(kString, num);
} else {
mapPoint.put(kString, 2);
}
} }
if (!map.isEmpty()) {
for (String key : map.keySet()) {
if (mapPoint.containsKey("re")
&& map.get(key) + mapPoint.get("re")
- 1 > max){
max = map.get(key) + mapPoint.get("re")
- 1;
} else if (map.get(key) > max) {
max = map.get(key);
} }
}
else {
if (mapPoint.containsKey("re")
&& mapPoint.get("re") > max) {
max = mapPoint.get("re");
}
}
} return max; }
}

算法练习之leetcode系列1-3的更多相关文章

  1. Leetcode系列之两数之和

    Leetcode系列之两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你 ...

  2. 【算法题 14 LeetCode 147 链表的插入排序】

    算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...

  3. leetcode 系列文章目录

    leetcode 系列文章目录 0. 两数之和1. 两数相加 2. 无重复字符的最长子串 3. 寻找两个有序数组的中位数 4. 最长回文子串 5. Z 字形变换 6. 整数反转 7. 字符串转换整数 ...

  4. C#刷遍Leetcode系列连载 索引

    C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...

  5. Leetcode系列-Search in Rotated Sorted Array

    做Leetcode题有一段时间了,但都是断断续续的,到现在才做了30题左右,感觉对自己来说还是有点难度的.希望自己能继续坚持下去,在校招前能解决超过一百题吧. 其实这些题就是用来训练你的解题思路的,做 ...

  6. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  7. 程序员进阶之算法练习:LeetCode专场

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本 ...

  8. 最长回文子串 C++实现 java实现 leetcode系列(五)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

  9. 【算法题目】Leetcode算法题思路:两数相加

    在LeetCode上刷了一题比较基础的算法题,一开始也能解出来,不过在解题过程中用了比较多的if判断,看起来代码比较差,经过思考和改进把原来的算法优化了. 题目: 给出两个 非空 的链表用来表示两个非 ...

随机推荐

  1. 115个Java面试题和答案——终极列表(上)

    本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能 ...

  2. 用Python生成组织机构代码,附源码

    #!/usr/bin/python import random def haoma(): ww = [3,7,9,10,5,8,4,2]#suan fa yin zi cc = [] dd=0 for ...

  3. NSUserDefaults的使用

    创建一个user defaults方法有多个,最简单得快速创建方法: NSUserDefaults *accountDefaults = [NSUserDefaultsstandardUserDefa ...

  4. c++并发练习---多线程顺序打印

    参考:http://blog.csdn.net/liuxuejiang158blog/article/details/22061267 题目:编写一个程序,开启3个线程,这3个线程的ID分别为A.B. ...

  5. hihoCoder 1425 : What a Beautiful Lake(美丽滴湖)

    hihoCoder #1425 : What a Beautiful Lake(美丽滴湖) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 ...

  6. http协议 幂等性的理解

    HTTP GET.DELETE.PUT.POST四种主要方法的幂等性的理解 GET: GET请求是幂等的,多次的GET请求,不应该修改数据状态,只是查询. DELETE Delete请求也具有幂等性, ...

  7. 我的Markdown笔记

    一片简单的Markdown笔记,共8项,基本上满足Markdown文档的编写(表格不建议用Markdown),每项上半部分是源码,下半部分是效果图片. 标题 段落 列表 强调 分割线 代码 连接 图片 ...

  8. ajax请求总是进入Error里

    ajax请求时找到了正确的地址,执行完返回总是进入error里,并且浏览器错误显示是找不到请求的地址. 解决办法: 查看配置文件的,把maxJsonLength值改大. <system.web. ...

  9. P​D​F​二​次​开​发​_​i​S​t​y​l​e​P​D​F​表​单​域​的​填​充

    wo讲到PDF表单,我们首先需要认识Adobe定义的PDF表单有哪些.以下是我从网上搜索到的简单介绍: PDF 表单简介 PDF 是可移植文档格式(Portable Document Format)的 ...

  10. JAVA 1.6 流程控制语句

    1. 条件运算符(三元表达式),其形式为:type d = a ? b : c; 具体化形式为:int d = 2 < 1 ? 3 : 4;2. 轻量级的文本编辑器:UltraEdit.Edit ...